我试图在Processing中创建一组半径不同的椭圆。我创建了一个半径值数组,并使用for循环创建了一系列具有不同半径的椭圆。
有八个椭圆以线性方式排列。我没有将椭圆保持在一行中,而是希望将它们放在两行或三行中。我怎样才能做到这一点?在这种情况下,for循环的本质是什么?
float [] r = {10,20,30,50,30,22,16,12};
void setup(){
size(400,400);
smooth();
}
void draw(){
background(225);
for(int i = 0;i<r.length;i++){
ellipse(50+i*30,50,r[i],r[i]);
}
}
答案 0 :(得分:0)
我建议拿出一张纸和一支铅笔,并举几个例子。每个圈子的x,y
位置是多少?每个圆圈的索引是多少?在你自己注意到这种模式之前,你可能不会理解任何答案。
无论如何,您可以使用单个for循环执行此操作:使用modulo operator计算位置,和/或将y
位置存储在您递增的变量中。
但是使用嵌套的for循环可能更容易:
float [] r = {
10, 20, 30, 50, 30, 22, 16, 12
};
void setup() {
size(400, 400);
smooth();
}
void draw() {
background(225);
for (int row = 0; row < 2; row++) {
for (int column = 0; column < 4; column++) {
int index = row*4 + column;
ellipse(50+column*30, 50+row*50, r[index], r[index]);
}
}
}