【问题标题】:Translate function翻译功能
【发布时间】:2016-06-07 20:13:47
【问题描述】:

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

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;
}

有人可以向我解释一下在这里使用 translate 的目的是什么,因为我们已经说过 startposition = startposition +1 ....

我不明白翻译功能是做什么的

【问题讨论】:

  • 欢迎来到 Stack Overflow。不幸的是,我们不知道您使用的是什么库,也不知道上下文是什么。如果您发布 minimal reproducible example,我们更有可能为您提供帮助。
  • java函数??你一定是指方法。那么哪个班?你看过javadoc吗?他们通常描述得很好
  • 这是处理中...
  • @JonSkeet 你能帮我解决这个问题吗,我刚刚编辑了问题
  • @sharonbn 你能看看吗

标签: processing translate


【解决方案1】:

阅读 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);


(来源:processing.org

// 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);


(来源:processing.org

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


(来源:processing.org

换句话说,translate() 函数会移动绘图画布,以便后续对 rect()ellipse() 等函数的调用将被抵消。这使您可以在不改变所有屏幕对象位置的情况下移动“相机”。

请注意,您正在0,0 位置绘制矩形和圆形。您没有使用 startposition 变量作为他们的位置。这就是为什么你必须打电话给translate() 来移动它们。您可以摆脱对translate() 的调用,但您必须使用startposition 变量作为位置。

【讨论】:

  • 非常感谢您的帮助
【解决方案2】:
startposition = startposition +  1; 

如果你不翻译,这条线不会做任何事情。翻译实际上改变了绘图画布的当前原点。原点一般在左上角,从(0,0)开始;

因此,翻译将使之后绘制的所有内容都位于距离 x 原点 0 的 startposition 像素处。

要了解我的意思,请尝试使用 translate 和不使用 translate 运行程序,您会看到不同之处。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2019-06-21
    • 1970-01-01
    • 1970-01-01
    • 2019-04-24
    • 1970-01-01
    • 2012-12-07
    • 2017-06-02
    • 1970-01-01
    相关资源
    最近更新 更多