有人可以向我解释如何在使用处理时使用翻译功能吗?
int startposition =0;
void setup(){
size(500,500);
}
void draw(){
background(255);
fill(0);
translate(startposition,50);
rect(0, 0, 200, 200);
ellipse(0, 0, 300, 200);
startposition = startposition + 1;
}
有人可以向我解释在这里使用翻译的目的是什么,因为我们已经说过startposition = startposition +1 ....
我不明白翻译功能的作用
答案 0 :(得分:3)
阅读the Processing reference可以最好地回答这些问题。
Here是translate()
函数的参考:
指定在显示窗口内移动对象的数量。 x参数指定左/右平移,y参数指定向上/向下平移,z参数指定朝向/离开屏幕的平移。将此函数与z参数一起使用时,需要将P3D作为参数与大小结合使用,如上例所示。
转换是累积的,适用于在函数之后发生的所有事情以及后续调用函数累积效果。例如,调用translate(50,0)然后translate(20,0)与translate(70,0)相同。如果在draw()中调用translate(),则在循环再次开始时重置转换。可以使用pushMatrix()和popMatrix()进一步控制此功能。
<强>示例:强>
translate(30, 20);
rect(0, 0, 55, 55);
// Translating in 3D requires P3D
// as the parameter to size()
size(100, 100, P3D);
// Translate 30 across, 20 down, and
// 50 back, or "away" from the screen.
translate(30, 20, -50);
rect(0, 0, 55, 55);
rect(0, 0, 55, 55); // Draw rect at original 0,0
translate(30, 20);
rect(0, 0, 55, 55); // Draw rect at new 0,0
translate(14, 14);
rect(0, 0, 55, 55); // Draw rect at new 0,0
换句话说,translate()
函数会移动绘图画布,以便对rect()
或ellipse()
等函数的后续调用进行偏移。这使您可以移动相机&#34;不改变所有屏幕上物体的位置。
请注意,您要在位置0,0
处绘制矩形和圆圈。您没有使用startposition
变量作为其职位。这就是为什么你必须致电translate()
来移动它们的原因。您可以删除对translate()
的调用,但是您必须使用startposition
变量作为位置。
答案 1 :(得分:1)
startposition = startposition + 1;
如果您在没有翻译的情况下离开此行,则该行不会执行任何操作。翻译实际上会更改绘图画布的当前原点。原点通常位于左上角,从(0,0)开始;
因此,翻译将使之后绘制的所有内容都与x原点的startposition
像素为0。
要了解我的意思,请尝试使用translate和without运行程序,您将看到差异。