使用Processing表现随机行为及牛顿运动学

本文通过Processing实现一系列实验,包括色彩平滑变化的噪声地形图、蚊虫群模拟、万有斥力与空气阻力、飞船弹簧携带货物及喷气飞船射击系统。通过代码分析和效果展示,探讨了面向对象编程在模拟物理现象中的应用。
摘要由CSDN通过智能技术生成

简介

    本博客中做的五个实验均用Processing完成,
    实验内容多半从书籍 The Nature of Code中学习而得,
    甚至是在其参考程序的基础上进行拓展修改而成的。

实验一 生成色彩平滑变化的噪声地形图

效果展示

效果一 灰度变换

在这里插入图片描述

效果二 RGB颜色变化

在这里插入图片描述

效果三 将线框隐去

在这里插入图片描述

参考案例与规律介绍

第一个实验我参考的案例是书中的 示例代码 0-6 和练习 0.10
二维Perlin噪声 和 噪声地形图

在原案例中,为了实现噪声地形图,代码中使得矩形顶点的Z轴坐标由 noise() 函数决定

	z[i][j] = 0.5*map(noise(xoff, yoff,zoff), 0, 1, -120, 120);

在此处,noise() 函数为三维的Perlin噪声,其噪声波形由三个值决定。
其中 xoff 与 yoff 两个值分别为行列的漂移值,这个两个值在地形图坐标循环计算过程中递增,使得不同的矩形高低不同。
但是 xoff 和 yoff 的递增值很小,这样做是为了保证相邻的矩形之间高度相差不会过于大,使得整体地形看起来平滑、和谐。
其中 map() 函数为映射函数,将 noise() 的返回值由(0,1)映射到(-120,120).

在认真分析原案例后,我发现原案例的矩形是只有一种颜色的,看起来过于单调。
所以就有了让地形图呈现彩色的想法。

代码分析

为了让矩形呈现彩色,那就要分别给矩形的RGB赋值。每个矩形的颜色要不一样,要想让效果变得炫酷,最好颜色是随机变换的。但是随机性又不能太强,如果一个红色矩形四周的八个矩形都是绿色的,那就太丑了。所以相邻矩形的RGB要平滑的随机变化。
Perlin噪声就能很好的满足这个需求。

	R = map(noise(xoff, yoff,t_coff), 0, 1, 0, 255);
	G = map(noise(xoff, yoff,t_coff+10000), 0, 1, 0, 255);
	B = map(noise(xoff, yoff,t_coff+20000), 0, 1, 0, 255);
	fill(R,G,B);

上面的代码实现了效果一,相邻矩形之间的灰度不同,且随着时间矩形的灰度也会变化。
但是上述代码却没有实现彩色的效果,分析后发现可能是和 noise() 的参数有关,虽然 RGB 的第三个参数不同,但是前两个参数相同,导致其返回值的差异有限,只能产生灰度图的效果。

	R = map(noise(xoff, yoff,t_coff), 0, 1, 0, 255);
    G = map(noise(xoff+10000, yoff+10000,t_coff+10000), 0, 1, 0, 255);
    B = map(noise(xoff+20000, yoff+20000,t_coff+20000), 0, 1, 0, 255);
    fill(R,G,B);

在修改代码后就实现了效果二。
但是地形图中矩形边上还是有黑黑的边框,不是特别美观。将边框隐去有两个方法,一个是让边框颜色和矩形一样,另一个是直接不绘制线框,两个方法都可以,我使用了第一个。

	stroke(R,G,B);
	noStroke();

实验二 蚊虫群模拟

效果展示

效果一

在这里插入图片描述

效果二

在这里插入图片描述

参考案例与规律介绍

第二个实验我参考的案例是书中的 示例代码 1-5示例代码 1-11
向量的长度一组同时朝着鼠标加速的运动物体

本实验的规律是蚊虫群与人的交互。
假设一个人身处傍晚时的草坪上,那这个人的头上可能就密密麻麻的飞着非常多的小蚊子。当这个人保持静止或者是走路时,蚊群就会跟着这个人,当你想要挥手去赶这些“烦人”的小东西时,它们就会一哄而散。
在本实验中,当鼠标静止不动或者是运动趋势为远离小球时,小球会受到一个方向为小球

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值