- ベストアンサー
パースを伴った投射の計算について質問があります。
パースを伴った投射の計算について質問があります。 円盤が画面真ん中から左右奥に向かって投射される動きをC++でプログラミングしようとしています。 ですが、パースが奥に行くに従って変化する円盤の大きさと速さ、y座標の変化の計算方法が 分かりません。 移動していく距離によって大きさが小さくなっていく事は分かるのですがy軸方向の変化の仕方が 微妙になってしまいます。 何か参考になる公式などあればご指摘いただけないでしょうか? よろしくお願いいたします。
- みんなの回答 (1)
- 専門家の回答
質問者が選んだベストアンサー
画面中央から、無限遠の収束点(画面上で物体が到達する一番奥と設定されている点)に向かう動きを考えます。 (1)画面上の物体の見掛けの大きさは、物体の距離に反比例します。(ただし、画面中央を距離0とはせず、適当な距離から始めるのが現実的) (2)同様に、物体の見掛けの移動速度は、その時の物体の距離に反比例します。 (3)画面上での物体の水平方向の座標(見掛けの移動距離)は(2)の見掛けの移動速度を移動時間で積分した値になります。 (4)画面上での物体の垂直方向の座標は、実際の垂直方向の変位に対し(1)のスケーリングを適用したものになります。 (5)画面上での物体は重心位置の質点運動として、その重心位置を(3)から、大きさを(1)から求めて描画することが出来ます。 (6)空気抵抗を考えないなら、実際の円盤の運動は投射方向への初速度と重力によって規定され、時間によって距離が求まります。 こんな感じに初速度を持った放物線運動を変換すれば良いはずです。空気抵抗とか、あるいは円盤の浮力とか考える場合も変換前の運動計算に加えるだけです。