书名:代码本色:用编程模拟自然系统
作者:Daniel Shiffman
译者:周晗彬
ISBN:978-7-115-36947-5
目录
3.8 波
1、波
- 当我们用正弦函数让一个圆在屏幕上做上下振荡运动时,实际上是让一个点沿着x轴上的波形轨迹运动。
- 现在,我们只需要加入一个for循环,就能让一串圆互相间隔地散布在x轴上做振荡运动,形成一个波形。
- 这样的波形可以用来模拟生物体的外形和质地柔软的表面(比如水面)。
2、遍历
我们要遍历x轴上的值,并在这些位置上画波形对应的点。假设遍历间隔是24个像素,在遍历的循环中,我们要做3件事:
- 1.根据振幅和角度的正弦值计算y坐标;
- 2.在(x,y)位置画一个圆;
- 3.根据角速度递增角度。
我们还可以再引入一个角度变量,用它表示整个波形的起始角度,这个角度(用startAngle表示)也根据角速度递增。
3、示例
示例代码3-9 波形
float startAngle = 0;
float angleVel = 0.23;
void setup() {
size(640,360);
}
void draw() {
background(255);
startAngle += 0.015;
float angle = startAngle;
for (int x = 0; x <= width; x += 24) {
float y = map(sin(angle),-1,1,0,height);
stroke(0);
fill(0,50);
strokeWeight(2);
ellipse(x,y,48,48);
angle += angleVel;
}
}