1
我正在处理草图,其中使用二维数组中的点绘制Delaunay图。 我随机生成阵列中的点,所以现在它们正在快速生成,因为draw()
循环运行。处理中的间隔运行功能
for(int i = 0; i < points.length; i++){
pX = random(nX);
pY = random(nY);
points[i][0] = pX;
points[i][1] = pY;
}
我要生成这些数字,例如每1秒。我试着用下面的代码,但线路被只绘制一个很短的时间每隔1秒,间隔似乎有所不同......
if (millis() - timeCheck > timeInterval){
for(int i = 0; i < points.length; i++){
timeCheck = millis();
pX = random(nX);
pY = random(nY);
points[i][0] = pX;
points[i][1] = pY;
}
}
我的最终目标是让老之间的变速线新的点,因为它们正在生成。我想使用宽松的方式,所以整个事情看起来不错,顺畅。
这是整个代码。我使用mesh library来绘制网格。
import megamu.mesh.*;
import processing.svg.*;
import processing.pdf.*;
boolean recording = false;
void rec() {
if (key == 'r' || key == 'R') {
recording = !recording;
}
}
float numX;
float numY;
float x;
float y;
float offset = 0.00;
float easing = 0.05;
Delaunay myDelaunay ;
int timeCheck;
int timeInterval = 1000;
void setup(){
size(600,400);
timeCheck = millis();
}
void draw(){
rec();
if (recording){
beginRecord(SVG, "####.svg");
}
offset = offset + .005;
background(noise(offset) * 50);
stroke((noise(offset) * 255)+100, (noise(offset) * 100)+50, noise(offset) * 255);
float[][] points = new float[10][2];
numX = (width);
numY = (height);
float nX = noise(offset) * width;
float pX = random(nX);
float targetX = random(nX);
float dX;
float nY = noise(offset) * height;
float pY = random(nY);
float targetY = random(nY);
float dY;
if (millis() - timeCheck > timeInterval){
for(int i = 0; i < points.length; i++){
timeCheck = millis();
//println(timeCheck);
pX = random(nX);
pY = random(nY);
points[i][0] = pX;
points[i][1] = pY;
}
}
myDelaunay = new Delaunay(points);
float[][] myEdges = myDelaunay.getEdges();
for(int i=0; i<myEdges.length; i++) {
dX = targetX - pX;
x += dX * easing;
dY = targetY - pY;
y += dY * easing;
float startX = myEdges[i][0];
float startY = myEdges[i][1];
float endX = myEdges[i][2];
float endY = myEdges[i][3];
line(startX, startY, endX, endY);
ellipse(startX, startY, 5, 5);
}
endRecord();
}
是否有你使用'frameCount%60 == 1'而不是'frameCount%60 == 0'的原因? –
@KevinWorkman这是我的印象,在调用'draw()'后,'frameCount = 1',所以'frameCount%60 == 1'将允许在draw()的第一次迭代中生成这些点。 – UnknowableIneffable
是的'frameCount'确实从'1'开始。有趣的一点。 –