For loop 如何使用FOR循环在圆中创建圆(正在处理中)

For loop 如何使用FOR循环在圆中创建圆(正在处理中),for-loop,geometry,2d,processing,trigonometry,For Loop,Geometry,2d,Processing,Trigonometry,我需要创建一个循环,它将在处理过程中围绕一个圆等距放置圆 我知道我可以以某种方式实现FOR循环 我需要能够增加或减少这个圆圈周围的圆圈数(按下按钮),但保持它们的间距相等 我知道这个公式需要包含在FOR循环中才能得到X和Y轴。公式如下: being X = R*cos(angle-90)+Y0 Y = R*sin(angle-90)+X0 我了解FOR循环的三个参数;它什么时候开始,什么时候结束,运行时会发生什么变化 我看不到的是如何将公式实现到FOR循环中 非常感谢 这是我的密码

我需要创建一个循环,它将在处理过程中围绕一个圆等距放置圆

我知道我可以以某种方式实现FOR循环

我需要能够增加或减少这个圆圈周围的圆圈数(按下按钮),但保持它们的间距相等

我知道这个公式需要包含在FOR循环中才能得到X和Y轴。公式如下:

being
   X = R*cos(angle-90)+Y0
   Y = R*sin(angle-90)+X0
我了解FOR循环的三个参数;它什么时候开始,什么时候结束,运行时会发生什么变化

我看不到的是如何将公式实现到FOR循环中

非常感谢

这是我的密码

void setup () {
  size (600, 600);
  background (255, 255, 255);
  smooth ();
  ellipse (width/2, height/2, 200, 200); // the guide circle. Not needed in final code.
}


void draw() {


  for (int i = 0; i < 20; i ++) {
    for (int j = 0; j < 20; j ++) {

      ellipse (i *20, j * 20, 20, 20);
    }
  }
}
void设置(){
大小(600600);
背景(255、255、255);
平滑();
椭圆(宽/2,高/2200200);//引导圆。在最终代码中不需要。
}
作废提款(){
对于(int i=0;i<20;i++){
对于(int j=0;j<20;j++){
椭圆(i*20,j*20,20,20);
}
}
}

此代码应起到以下作用:

    float incrementalAngle = 0.0;

void setup(){
  size(600, 600);
  smooth();
  background(0);

  ellipse(width/2, height/2, 200, 200);
  drawCircles(20, 200);
}

void draw(){

}

void drawCircles(int circlesNumber, int bigCircleNumber){
  float angle = incrementalAngle;

  for(int i = 0; i < circlesNumber; i++){
    ellipse(bigCircleNumber * cos(incrementalAngle) + height/2, 
            bigCircleNumber * sin(incrementalAngle) + width/2, 
            circlesNumber, circlesNumber);
    incrementalAngle += TWO_PI / circlesNumber;  
  } 
}
float incrementalAngle=0.0;
无效设置(){
大小(600600);
光滑的();
背景(0);
椭圆(宽/2,高/2200200);
画圈(20200);
}
作废提款(){
}
虚线画圈(int CircleNumber,int bigCircleNumber){
浮动角度=递增角度;
对于(int i=0;i

所以第二个循环是不需要的,你要介绍的公式是在椭圆的X和Y位置,通过角度和cos和sin,你可以得到你想要的结果

现在剩下的就是通过在
mousePressed()
方法中单击并绘制所需的圆圈数

希望这有用,如果你需要更多帮助,请打电话给我

问候
何塞。

感谢所有帮助过你的人

我设法做到了(与你略有不同@Jose Gonzalez

   int nbr_circles = 2;
void setup() {    
  size(600, 600);

  smooth();
  background(255);
} 

void draw() { 
  background(255);
  float cx = width/2.0;
  float cy = height/2.0;
  fill(0);
  //float x, y; //  
  for (int i = 0; i < nbr_circles; i++) 
  {
    float angle = i * TWO_PI / nbr_circles;
    float x = cx + 110.0 * cos(angle);                
    float y = cy + 110.0 * sin(angle);                
    ellipse(x, y, 20, 20);
  }
}

void mousePressed() {

  if (mouseButton == LEFT) {
    if (nbr_circles < 20)
    nbr_circles = nbr_circles + 1;

  } else if (mouseButton == RIGHT) {
    if (nbr_circles > 2) 
      nbr_circles = nbr_circles - 1;

  }
}
int nbr\u圆圈=2;
无效设置(){
大小(600600);
光滑的();
背景(255);
} 
void draw(){
背景(255);
浮动cx=宽度/2.0;
浮动cy=高度/2.0;
填充(0);
//浮动x,y;//
对于(int i=0;i2)
nbr_圈=nbr_圈-1;
}
}

你到底想做什么?你是想把X个圈放在另一个圈里吗?如果是这样的话,把你试过的东西以a的形式贴出来。还是想把尽可能多的圈放进去?如果是这样的话,请检查。@KevinWorkman我需要写一个草图,其中n个圈(2到10之间)是围绕一个圆等距排列的。我需要草图用户使用鼠标左键和右键或“+”和“-”或类似按钮来调整n。我想使用FOR循环,使用我的问题中的公式来等距排列n个圆。虽然我可以使用FOR循环来处理网格和形状行之类的基本问题,但我看不到如何将它们放入一个等间距的圆圈。最让人困惑的是如何将公式添加到FOR循环参数中。感谢您花时间阅读/回复。这不是家庭作业,这是一个章节结束练习。我正在尝试在圆圈周围放置圆圈。我不认为我要的是圆圈填充。圆圈的最小数量是2。最大数量ber是10。当通过按键添加更多的圆时,它们需要保持等距。我最感兴趣的是如何将x和y坐标的公式放入for循环中。@Jdoh好的,我明白了。我同意圆填充不是你想要的。这里有一个提示:你有一个公式(包括sin和cos)。你知道R值吗(这是圆的半径).X0和Y0只是圆的中心。现在你所需要的只是角度。这就是for循环的作用。如果你想添加10个圆,你可以创建一个for循环,从0开始,然后每次迭代增加36个角度。当角度达到360度时,你已经绕着圆走了一整圈。谢谢你,凯文。我需要多个循环吗.1代表n=10,n=9,n=8…n=2?正如你所说,A对于n=10增加了36,我是否为n=9编写了一个类似的循环,但它增加了40?(360/9)。再次感谢。你上一次的评论让一切都更清楚了。还不清楚,但我已经做到了:)你试图帮助别人真是太好了,但是你真的应该考虑通过OP来代替Office。勺子喂养没什么帮助。不要这么难…我下次会接受这个建议。