2012-08-14 242 views
1

如何将角度(rx, ry, rz)的点(x, y, z)关于各自的轴旋转?计算旋转角度和旋转角度前的位置的绝对位置

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

是否有任何DirectX例程可以完成此任务?

+2

您需要找到公式。这个问题与编程有什么关系? – klm123 2012-08-14 13:10:58

+4

这些角度指的是什么?他们是欧拉角吗?一般来说,你应该从这些角度得到一个旋转矩阵(方式取决于这些角度代表的内容,参见例如[这里](http://en.wikipedia.org/wiki/Rotation_formalisms_in_three_dimensions#Conversion_formulae_between_formalisms)),并将其应用于位置矢量。 – 2012-08-14 13:11:43

+3

阅读这个http://en.wikipedia.org/wiki/Rotation_matrix – mathematician1975 2012-08-14 13:16:00

回答

3

你在问什么是如何使用Euler Angles进行旋转。有几种惯例可供您选择,但在我看来,您感兴趣的是应用围绕Z轴的旋转,然后绕Y旋转,然后围绕X旋转。为此,您将乘以矩阵

enter image description here

其中

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

有几个问题这种方法,比较常见的是gimbal lock之一。首选的方法是使用角度轴配方之一。其中最常见的两种是Unit Quaternion RotationsEuler-Rodreigues Rotation Matrices。可以通过明确定义三个旋转轴及其相关旋转角度来产生12个欧拉旋转矩阵中的任意一个,然后将产生的旋转表示以与要旋转的矢量相反的顺序相乘。

DirectX使用Quaternions for performing rotations

+0

+1了解问题(我不能),并为清晰和详细的答案! – Ali 2012-08-14 19:37:15

1

在我的电子器件(EM)类我学会使用公式

X = R sinq cosf,Y = R sinq SINF,Z = R COSQ

More Info Here转换笛卡尔坐标到极坐标cordinates

q是theta,f是phi。

+0

我不认为这是海报的要求。你在极坐标和笛卡尔坐标之间转换。 OP正在询问如何使用欧拉角将点从一个位置旋转到另一个位置。 – andand 2012-08-14 16:18:48