为什么我的轮换在处理中古怪?

问题描述:

我尝试在我的draw()函数中使用此代码处理创建的图形程序中编写垂直文本。为什么我的轮换在处理中古怪?

// Translate to where I want text to be. 
    translate(20., 30.); 

    // Center align text 
    textAlign(CENTER); 

    // Rotate text-to-be written by 270 degrees to make it vertical. 
    rotate(270.); 

    // Write vertical text. 
    text("Some Vertical Text", 0, 0); 

    // Undo rotation and translation. 
    rotate(-270.); 
    translate(-20., -30.); 

但是,此代码不会垂直旋转文本。事实上,所写的文本既不是垂直也不是水平倾斜的。

这是怎么回事?

你必须用弧度指定角度。改为尝试rotate(PI/2.0*3)。如果你不喜欢使用弧度,你可以用radians(x)函数来转换它们。最终结果如下所示:rotate(radians(270))

噢,一般来说,使用pushMatrix()来保存当前的平移/旋转/状态并且popMatrix以后恢复它而不是回转是个好主意。旋转往往会给你很小的舍入误差,可以快速积累。

+0

谢谢! '旋转(3 * PI/2)'正确旋转文本。另外,非常感谢使用矩阵堆栈的建议。从现在开始,这将为我节省大量的图形编程工作(并且更准确)。 – dangerChihuahua007 2012-02-27 00:52:42