1

如何将点围绕各自的轴旋转(x, y, z)角度?(rx, ry, rz)

也就是说,我如何确定由旋转角度(x1, y1, z1)旋转产生的点?(x, y, z)(rx, ry, rz)

是否有任何 DirectX 例程可以做到这一点?

4

2 回答 2

3

您要问的是如何使用欧拉角进行旋转。您可以选择多种约定,但在我看来,您有兴趣应用绕 Z 轴旋转,然后绕 Y 旋转,然后绕 X 旋转。为此,您将发布乘以矩阵

在此处输入图像描述

在哪里

c1 = cos(rx)    s1 = sin(rx)
c2 = cos(ry)    s2 = sin(ry)
cs = cos(rz)    s3 = sin(rz)

这种方法有几个问题,其中一个更常见的是gimbal lock。首选方法是使用角轴公式之一。其中最常见的两个是Unit Quaternion RotationEuler-Rodreigues Rotation Matrices。通过显式定义三个旋转轴及其相关的旋转角度,然后以相反的顺序将结果旋转表示相乘,它们将被组合以生成 12 个欧拉旋转矩阵中的任何一个,以将它们应用于要旋转的向量。

DirectX 使用四元数来执行旋转

于 2012-08-14T16:37:33.217 回答
1

在我的电子(EM)课程中,我学会了使用公式将笛卡尔坐标转换为极坐标

x = r sinq cosf, y = r sinq sinf, z = r cosq

更多信息在这里

q 是 theta,f 是 phi。

于 2012-08-14T13:18:05.723 回答