所以我需要以某种方式将指向3D世界中的实体的PITCH和YAW角度(我也有距离)转换为2d屏幕X和Y位置。有谁知道我会怎么做?
答案 0 :(得分: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
答案 1 :(得分:0)
根据我的理解,我想你想知道如何从球面坐标系(标量长度,俯仰,偏航)转换为笛卡尔坐标系(x,y,z)。如果是,那么这里是指向Spherical coordinate system的链接。