7

GLScene中,我们有三个参数(RollAngle、PitchAngle 和 TurnAngle)用于围绕局部方向旋转。在下图中,如何围绕全局方向(橙色轴)旋转立方体?

在此处输入图像描述

4

3 回答 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 回答