处理 - 转换和循环,for循环

时间:2014-10-23 04:33:46

标签: processing

我正在使用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次?

感谢您的任何建议或帮助。

1 个答案:

答案 0 :(得分:1)

第一个for循环应该是(int k = 0; k <8; k ++),如果你想让它运行8次。如果您希望角度为45,90,... 360,那么您可以添加如下变量:

int angle = 0;
....
angle+=45;
rotate(radians(angle));
....

另外,如果你想围绕对象的原点旋转而不是将它放在一个更大的圆圈中,你可能想要交换旋转和平移,不知道你想要什么效果。