翻译功能

时间:2016-02-25 07:20:01

标签: processing translate

有人可以向我解释如何在使用处理时使用翻译功能吗?

 
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 ....

我不明白翻译功能的作用

2 个答案:

答案 0 :(得分:3)

阅读the Processing reference可以最好地回答这些问题。

Heretranslate()函数的参考:

  

指定在显示窗口内移动对象的数量。 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运行程序,您将看到差异。