画面上のある点に画像を表示しようとしています。
現在のポイントのピッチとヨーがあります。必要なのは、これらの値を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)
- プレーヤーは私の後ろにいます=>リターン(高さ、幅/ 2)
- プレーヤーは私の左側にいます=>リターン(高さ/ 2、0)
- プレーヤーは私の右側にあります=>リターン(高さ/ 2、幅)
- プレーヤーは私の真上にいます=>リターン(0、幅/ 2)