处理 - 一次显示一个圆圈

时间:2015-01-14 02:00:03

标签: processing geometry

我已经编写了这段代码,在按下鼠标按钮的情况下,增加或减少可见的圆圈数量,围绕圆圈等距离。

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;

  }
}

我想改变代码,以便在nbr_circles固定为10的情况下,一次只能看到一个圆圈,每个圆圈依次在连续的帧中。

我稍微更改了代码。鼠标按钮不执行任何操作,nbr_circles固定为10.

我现在如何一次显示一个圆圈?

显示圈子#1 - &gt;隐藏圈子#1,显示圈子#2 - &gt;隐藏圈子#2,显示圈子#3 ... - &gt;隐藏圈子#9,显示圈子#10 - &gt;隐藏圈子#1,显示圈子#1 ......

调整后的代码 - 哪里出错了?

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

void draw () {
  background (255);
  fill (0);
  float cx = width/2.0;
  float cy = height/2.0;
  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);
}

if (mouseButton == LEFT) {
  if (ellipse(x,y,20,20))
  rotate (angle);
}

提前致谢。

1 个答案:

答案 0 :(得分:-1)

退后一步,我真的建议你开始小一些,而不是每次遇到困难时发布一个新问题。看起来你对Processing的基本语法有一个基本的误解,所以也许你应该回去做一些教程,直到你对它更加舒服。这可能是我能给你的最“正确”的答案,即使它可能不是你想要的。

要回答为什么调整后的代码不起作用的问题,这是因为没有一种语法有意义。首先,你在函数之外有一个if语句,这是无效的。你什么时候期望if语句被执行?

其次,你在if语句中有了ellipse()函数,但是ellipse()函数没有返回一个布尔值。你有什么期望呢?最后,你期望旋转功能做什么?

您似乎正在尝试复制粘贴您在互联网上找到的代码,但却没有真正理解其中的任何内容。那不行。你必须退后一步,了解基础知识,然后才能制作一个实际上你想要它做的事情的程序。

如果您编辑“调整后的代码”来解决我指出的问题,我会尽力帮助您完成整个过程,但是您真的应该考虑回去并开始缩小,然后再尝试获取其他人的代码互联网工作。