我正在使用Processing来尝试绘制一些东西而且我已经陷入了我试图运行的FOR循环。
我有一个草图,我想通过利用翻译和旋转命令缩短。但是,出于某种原因,我不能让它发挥作用。如果我注释掉第一个FOR循环(" for(int k = 0; ...)"它正确地绘制在我的8个象限中的一个。我只想旋转45度,再画一遍,然后继续直到它完全循环。
int hHeight, hWidth;
void setup(){
size(800,800);
hHeight = height/2;
hWidth = width/2;
background(0);
strokeWeight(.5);
}
void grid(){
stroke(255);
line(hWidth,0,hWidth,height);
line(0,hHeight,width,hHeight);
line(width,0,0,height);
line(0,0,width,height);
}
void rotatingGrid(float steps){ // This is the one I am having trouble with...
for (int k = 0; k == 8; k ++){ // loop this 8 times, to complete 8 rotations
pushMatrix();
translate(hWidth,hHeight);
rotate(radians(45));
for (int i = 0; i < hWidth; i+= steps){
line(i,0,hWidth-i,hHeight-i);
}
popMatrix();
}
}
void draw(){
stroke(255);
grid();
rotatingGrid(10);
}
因此,如果您注释掉第一个FOR循环(和结束括号),它就能正常工作。如何循环,将其旋转7次,而不是仅仅旋转&#34;旋转(弧度(45))&#34;和FOR循环7次?
感谢您的任何建议或帮助。
答案 0 :(得分:1)
第一个for循环应该是(int k = 0; k <8; k ++),如果你想让它运行8次。如果您希望角度为45,90,... 360,那么您可以添加如下变量:
int angle = 0;
....
angle+=45;
rotate(radians(angle));
....
另外,如果你想围绕对象的原点旋转而不是将它放在一个更大的圆圈中,你可能想要交换旋转和平移,不知道你想要什么效果。