处理(Java可视化语言):旋转矩形,使用rectMode(CENTER)而不是rectMode(CORNER)留下奇怪的淡入淡出效果

时间:2014-02-18 05:45:50

标签: java processing

我正在练习物体,当它们移动时会留下褪色的痕迹效果。目前我正在画布中间顺时针旋转一个矩形,并在画布的每一帧上画一个低不透明度的矩形,产生一个漂亮的褪色痕迹。

问题:当我使用rectMode(CORNER)时,淡入淡出的踪迹只会完全消失。 [我应该提到没有提到rectMode默认为CORNER。]这是不可取的,因为矩形围绕一个角而不是它的中心枢转。
我更喜欢使用rectMode(CENTER),但运动轨迹不会完全淡化此命令。相反,这些小径构成了一个坚固的,完全不透明的颜色的3/4圈。

我试图包含奇数3/4运动轨迹圈的截图,但我被告知我缺乏必要的声誉。

这很奇怪,看起来像是一个小虫 有什么想法吗?

int shapeSize = 150;
float q = 0;

void setup() {
  size(500, 500);
  smooth();
  noStroke();
  background(0);
}

void draw() {

  noStroke();
  fill( 0, 15);  //builds up low-opacity layers over object
  rect(0, 0, width, height);

  //pushMatrix();
  rectMode(CENTER);  //TOGGLE ON AND OFF TO SEE THE ISSUE
  translate(width/2, height/2);
  rotate(q);
  noStroke();
  fill(255,255);
  rect(0,0, shapeSize,shapeSize);
  q += 0.02;
  //popMatrix();  //Tried toggling push and popMatrix -- no luck
}

1 个答案:

答案 0 :(得分:1)

我总是犹豫着指责一种语言有错误:)尝试下面的代码,我想你会明白为什么会出现这种情况。 (它与你的相同,只是我改变了半透明矩形的颜色)。如果您想要更多解释,请发表评论,我很乐意帮忙。

int shapeSize = 150;
float q = 0;

void setup() {
  size(500, 500);
  smooth();
  noStroke();
  background(0);
}

void draw() {

  noStroke();
  fill( 100, 15);  //builds up low-opacity layers over object
  rect(0, 0, width, height);

  //pushMatrix();
  rectMode(CENTER);  //TOGGLE ON AND OFF TO SEE THE ISSUE
  translate(width/2, height/2);
  rotate(q);
  noStroke();
  fill(255,255);
  rect(0,0, shapeSize,shapeSize);
  q += 0.02;
  //popMatrix();  //Tried toggling push and popMatrix -- no luck
}