For loop 如何使用FOR循环在圆中创建圆(正在处理中)
我需要创建一个循环,它将在处理过程中围绕一个圆等距放置圆 我知道我可以以某种方式实现FOR循环 我需要能够增加或减少这个圆圈周围的圆圈数(按下按钮),但保持它们的间距相等 我知道这个公式需要包含在FOR循环中才能得到X和Y轴。公式如下: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循环中 非常感谢 这是我的密码
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。勺子喂养没什么帮助。不要这么难…我下次会接受这个建议。