2013-05-20 69 views
2

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

+2

有很多方法可以做到这一点;你将不得不提供更多信息。 – Beta

回答

0

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

4

示例。

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

然后您可以将YAW转换为X这样:X = 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转换为Y这样:Y = 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