PITCH和YAW到2d屏幕坐标?

时间:2013-05-20 21:14:32

标签: c++ math

所以我需要以某种方式将指向3D世界中的实体的PITCH和YAW角度(我也有距离)转换为2d屏幕X和Y位置。有谁知道我会怎么做?

2 个答案:

答案 0 :(得分:4)

实施例

我们假设: 屏幕大小为1024x768(X = 0..1024,Y = 0..768); 水平视角为180 grad(YAW = -90..90)。

然后您可以通过以下方式将YAW转换为XX = k * (YAW + 90)

对于此示例k = horiz_screen_size / horiz_angle_of_view = 1024/180。

然后我们需要找到垂直视角:vert_angle_of_view = vert_screen_size / k = 768 /(1024/180)= 135 grad => PITCH = -67.5..67.5。

因此,您可以通过以下方式将PITCH转换为YY = k * (PITCH + 67.5)


通用公式:

X = k * (YAW + 0.5*horiz_angle_of_view)
Y = k * (PITCH + 0.5*vert_angle_of_view)

,其中

k = horiz_screen_size / horiz_angle_of_view
vert_angle_of_view = vert_screen_size / k

答案 1 :(得分:0)

根据我的理解,我想你想知道如何从球面坐标系(标量长度,俯仰,偏航)转换为笛卡尔坐标系(x,y,z)。如果是,那么这里是指向Spherical coordinate system的链接。