旋转后的3D坐标

时间:2014-06-08 08:19:28

标签: javascript math 3d three.js

我有2分:C和P

我想在3维中围绕C旋转P.

我如何计算P的新位置?

我有两个角度:'偏航'并且'推销'。

Yaw在' x'上围绕C移动P.轴,所以它向左和向右移动点。

Pitch在'' C周围移动P.轴,所以它向上和向下移动它。

Z,深度向+移动,离开你 -

当然,我想让它与中级'位置也是如此,如45度偏航和45度俯仰。

Yaw和Pitch在DEG中给出,然后转换为RAD(在此代码之前,所以代码使用RAD)

p.x = c.x + Math.sin(yaw) * Math.sin(pitch);
p.y = c.y + Math.cos(yaw);
p.z = c.z + Math.cos(yaw) * Math.cos(pitch);

想象一个球体和一个点,我想将点移动到球体的表面。

这有时可行,有时不行。我错过了什么?

很抱歉,如果这是重复的,我不知道应该搜索什么。

这是关于我的问题的小提琴:http://jsfiddle.net/Jm6Lt/2/

计算蓝色球体的位置,白色球体围绕红色球体的中心旋转。

1 个答案:

答案 0 :(得分:1)

你记下的是C周围半径为1的球面上的球面坐标。

查找"旋转矩阵"和" Givens旋转",这些是旋转给定点的操作。您要查找的操作类型将具有

形式
P'=C+R*(P-C), 

其中R是旋转矩阵。


你的球面坐标略有错误,应该是:

p.x = c.x + Math.sin(yaw) * Math.sin(pitch);
p.y = c.y + Math.cos(yaw);
p.z = c.z + Math.sin(yaw) * Math.cos(pitch);

然后(yaw, pitch)=(0,0)的向量是(0,1,0)(在通过C进行平移之前)并且坐标描述了它的旋转,首先是围绕x轴的yz平面,具有角度偏航,然后是围绕y的yz平面角度间距的轴。