我有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/
计算蓝色球体的位置,白色球体围绕红色球体的中心旋转。
答案 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平面角度间距的轴。