全球轮换

Ata*_*Ata 7 delphi opengl quaternions euler-angles glscene

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

在此输入图像描述

Mik*_*ola 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)))
Run Code Online (Sandbox Code Playgroud)

编辑:将变量重命名为与俯仰,偏航,滚动命名约定一致.

  • 欢迎来到3d Geometry. (2认同)

Har*_*riv 3

也许您可以使用“DummyCube”对象作为父对象。然后你可以先旋转虚拟立方体中的立方体,然后旋转虚拟立方体。