我正在尝试在屏幕上的某个点上显示图像。
我有当前点的俯仰和偏航。我需要的只是将这些值转换为 2 个坐标点。
这是我到目前为止所做的:
double tmp_yaw = yaw - myPlayer_yaw;
double tmp_pitch = pitch - myPlayer_pitch;
if (tmp_yaw < -180D) tmp_yaw += 360D;
if (tmp_yaw > 180D) tmp_yaw -= 360D;
// X Y screen coords
int x = (tmp_yaw / 180) * (screen_width / 2);
int y = (tmp_pitch / 90) * (screen_height / 2);
乍一看,这段代码看起来很简单,但我不知道为什么我没有显示预期的点。
变量在yaw
这里pitch
是旋转到 3D 中的点。
变量myPlayer_yaw
和myPlayer_pitch
代表玩家在任何时候正在看的地方。
我做错什么了吗?
我想得到这样的结果:
- 我正在寻找一个玩家 => 返回(高度/2,宽度/2)
- 玩家在我身后 => 返回 (height, width/2)
- 玩家在我左边 => Returns (height/2, 0)
- 玩家在我的右边 => Returns (height/2, width)
- 玩家就在我上方 => 返回 (0, width/2)