为什么我的轮换在处理中古怪?
问题描述:
我尝试在我的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
以后恢复它而不是回转是个好主意。旋转往往会给你很小的舍入误差,可以快速积累。
谢谢! '旋转(3 * PI/2)'正确旋转文本。另外,非常感谢使用矩阵堆栈的建议。从现在开始,这将为我节省大量的图形编程工作(并且更准确)。 – dangerChihuahua007 2012-02-27 00:52:42