xxxxxxxxxx
int num = 50;
float r = 270;
int current = 0;
ArrayList<PVector> triangle = new ArrayList<PVector>();
ArrayList<PVector> points = new ArrayList<PVector>();
// setup関数 : 初回1度だけ実行される
void setup() {
//frameRate(1);
size(850, 450); // ウィンドウサイズを960px,540pxに
colorMode(HSB, 360, 100, 100); // HSBでの色指定にする
smooth(); // 描画を滑らかに
for (int i = 0; i < 3; i++) {
PVector tp = new PVector(cos(TWO_PI * i/3f)*r, sin(TWO_PI * i/3f)*r);
triangle.add(tp);
}
int n = 0;
for (int i = 0; i < num * 3; i++) {
if (i>0 && i%num == 0) {
n++;
}
PVector t1 = triangle.get(n%3);
PVector t2 = triangle.get((n+1)%3);
PVector p = PVector.lerp(t1, t2, (float(i)%num)/float(num));
points.add(p);
}
}
// draw関数 : setup関数実行後繰り返し実行される
void draw() {
noStroke();
fill(0, 0, 0, 50);
rect(0, 0, width, height);
translate(width/2, height/2+50);
rotate(PI/6);
noFill();
strokeWeight(2);
stroke(frameCount%360, 40, 100);
for (int n = current; n < current + num/3; n++) {
PVector c1 = points.get(n%(num*3));
PVector c2 = points.get((n+num)%(num*3));
line(c1.x, c1.y, c2.x, c2.y);
}
current++;
strokeWeight(4);
stroke(0,0,100);
for (PVector p : points) {
point(p.x, p.y);
}
}