2次元配列の点を使用してドロネー図を描画する処理スケッチで作業しています。 ランダムに配列内の点を生成するので、draw()
ループが実行されるので、非常に迅速に生成されています。処理中のインターバルで関数を実行
for(int i = 0; i < points.length; i++){
pX = random(nX);
pY = random(nY);
points[i][0] = pX;
points[i][1] = pY;
}
私はこれらの数字に例えば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;
}
}
私の究極の目標は、古いものとの間のシフトラインを持っていることです...私は次のコードを使用してみましたが、ラインは非常に短い時間のためにだけ1秒ごとに描かれている、との間隔が変化するように思えます新しいポイントが生成されます。私はイージーを使いたいので、全体が素敵で滑らかに見えます。
ここにコード全体があります。私は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 == 0'の代わりに' frameCount%60 == 1'を使用した理由はありますか? –
@KevinWorkman 'draw()'、 'frameCount = 1'を呼び出した後、' frameCount%60 == 1 'とすると、 'draw()'の最初の繰り返しでポイントが生成されるという印象でした。 – UnknowableIneffable
うん、 'frameCount'は' 1'で始まります。興味深い点。 –