level 2
ywong🐒
楼主
我试试一个noise函数的例子, 这个例子如下
float[] randomY;
float[] noiseY;
float con =1;
void setup(){
size(800,300);
randomY = new float[width];
noiseY = new float[width];
for(int i=0;i<width; i++){
randomY[i] = random(1)*height;
noiseY[i] = noise(i*con)*height;
//println(noiseY[i]);
}
noStroke();
}
void draw(){
background(255);
for(int i=0; i<width; i++){
noiseY[i]=noise(i*con)*height;
//noiseY[i]=noise((i*frameCount)*con)*height;
//noiseY[i]=noise((i*frameCount*0.01)*height;
}
for(int i=0; i<width; i++){
fill(0);
ellipse(i, randomY[i],4,4);
fill(255,0,0);
ellipse(i,noiseY[i],4,4);
}
}
void keyPressed(){
if(keyCode==UP){
con*=10;
}else if(keyCode==DOWN){
con*=0.1;
}
}
问题1:开始运行这个例子, draw()应该是会不停的调用,那画面的点应该是不停的重新画,但运行后画面是能会画出好多黑点和红点,但为什么画面会是静止的;

问题2: 程序中有控制按键调整con的大小,按向下时,con会缩小10倍, 那draw()调用时会执行noise(i*con), 那这时后画面中红色的点会连接为一条连续的曲线,为什么不再会是离散的点,而是连续的曲线?因 int i是1,2,3,等, 那画出的点好像不可能有连续的, 就像我们刚开始运行程序一样,点都是离散的,更改con的值,怎会有这么大的变化

2018年10月21日 10点10分
1
float[] randomY;
float[] noiseY;
float con =1;
void setup(){
size(800,300);
randomY = new float[width];
noiseY = new float[width];
for(int i=0;i<width; i++){
randomY[i] = random(1)*height;
noiseY[i] = noise(i*con)*height;
//println(noiseY[i]);
}
noStroke();
}
void draw(){
background(255);
for(int i=0; i<width; i++){
noiseY[i]=noise(i*con)*height;
//noiseY[i]=noise((i*frameCount)*con)*height;
//noiseY[i]=noise((i*frameCount*0.01)*height;
}
for(int i=0; i<width; i++){
fill(0);
ellipse(i, randomY[i],4,4);
fill(255,0,0);
ellipse(i,noiseY[i],4,4);
}
}
void keyPressed(){
if(keyCode==UP){
con*=10;
}else if(keyCode==DOWN){
con*=0.1;
}
}
问题1:开始运行这个例子, draw()应该是会不停的调用,那画面的点应该是不停的重新画,但运行后画面是能会画出好多黑点和红点,但为什么画面会是静止的;

问题2: 程序中有控制按键调整con的大小,按向下时,con会缩小10倍, 那draw()调用时会执行noise(i*con), 那这时后画面中红色的点会连接为一条连续的曲线,为什么不再会是离散的点,而是连续的曲线?因 int i是1,2,3,等, 那画出的点好像不可能有连续的, 就像我们刚开始运行程序一样,点都是离散的,更改con的值,怎会有这么大的变化
