2 回答

TA貢獻(xiàn)1877條經(jīng)驗 獲得超6個贊
您的問題是您不會為每個手臂旋轉(zhuǎn)相同的矩陣n。您可以通過簡單地刪除旋轉(zhuǎn)命令中的 來修復(fù)代碼i*。
所以
rotate(i*(2*PI/n));
line(0, 0, 400, 0);
應(yīng)該是
rotate(2*PI/n);
line(0, 0, 400, 0);
如果你想與你一起工作,i*你必須在每次畫線時推入和彈出一個矩陣,而不僅僅是在開始和結(jié)束時draw():
push();
rotate(i*(2*PI/n));
line(0, 0, 400, 0);
pop();

TA貢獻(xiàn)1794條經(jīng)驗 獲得超8個贊
用 push 和 pop 圍繞你的 for 循環(huán)內(nèi)的旋轉(zhuǎn),這樣你每次迭代都重置旋轉(zhuǎn),我試過了,它在這里工作是結(jié)果代碼
int n;
void setup(){
size(displayWidth, displayHeight);
n = 7;
}
void draw(){
background(0);
push();
translate(displayWidth/2, displayHeight/2);
strokeWeight(4);
for (int i=0; i < n; i++){
stroke(random(255), random(255), random(255));
//println(i);
//println("theta is", i*(2*PI/n));
//println("theta in deg is", i*(2*PI/n)*180/PI);
push();
rotate(i*(2.0*PI)/n);
line(0, 0, 400, 0);
pop();
}
pop();
}
void keyPressed(){
if (key == '='){
n++;
} else if (key == '-'){
n--;
if (n <= 0) n = 1;
}
}
添加回答
舉報