如何使用Yaw,Pitch and Roll和len在我的空间中获得3D点

时间:2013-06-12 07:12:19

标签: c++ math physics game-engine

我需要计算我的世界空间中的3d点,当我有滚动俯仰,偏航,len。

需要像这样的函数返回3dpoint:

Get3DpointFrom_yaw_pitch_roll(yaw,pitch,roll,len)

谢谢!

我尝试这个代码,但问题是当偏航值为0时,y将设置为零!

 float x=0,y=0,z=0,r=30;float theta=0; float phi=0; 

 theta=-Camera_Yaw*3.1415/180; 

 phi=(3.1415/2)-(-Camera_Pitch*3.1415/180); 

 x = r*sin(theta)*cos(phi); 
 y = r*sin(theta)*sin(phi); 
 z = r*cos(theta);

1 个答案:

答案 0 :(得分:1)

如果你有球面坐标,转换只是由

给出
x = r*sin(theta)*cos(phi)
y = r*sin(theta)*sin(phi)
z = r*cos(theta)

我不参与航班业务,但如果我理解维基百科,那么theta = yawphi = pi/2-pitch。另一方面,不需要滚动角度,因为如果你寻找一个点,那么你可以根据需要沿着它的轴滚动它,它不会改变它的坐标(刚体的不同故事,当然)。