在GLScene中,我们有三个参数(RollAngle、PitchAngle 和 TurnAngle)用于围绕局部方向旋转。在下图中,如何围绕全局方向(橙色轴)旋转立方体?
问问题
2514 次
3 回答
7
您需要将轴角旋转转换为欧拉角。这是一个用代码详细解释这个过程的链接:
http ://www.euclideanspace.com/maths/geometry/rotations/conversions/angleToEuler/index.htm
来自文章:
yaw = atan2(y * sin(angle)- x * z * (1 - cos(angle))
, 1 - (y2 + z2 ) * (1 - cos(angle)))
pitch = asin(x * y * (1 - cos(angle)) + z * sin(angle))
roll = atan2(x * sin(angle)-y * z * (1 - cos(angle))
, 1 - (x2 + z2) * (1 - cos(angle)))
编辑:重命名变量以与俯仰、偏航、滚动命名约定一致。
于 2011-06-22T17:22:44.070 回答
3
也许您可以使用“DummyCube”对象作为父对象。然后您可以先旋转虚拟立方体内的立方体,然后旋转虚拟立方体。
于 2011-06-23T18:45:22.333 回答
1
这是一个肮脏的作弊,但如果对象位于原点 (0,0,0) 并且场景中只有一个对象,您可以围绕对象摆动相机(和光源)而不是旋转对象。
于 2011-06-22T18:03:42.820 回答