2012-02-17 44 views
3

私は、OpenGlとC++で動く回転ポリゴンを実装しようとしています。
移動と回転はXZ平面に沿って行われます(2D変換のみ)。
ポリゴンは、中心点とその中心点からのオフセットとして座標が格納された頂点のセットによって定義されます。
ポリゴンは、移動した距離を中心点に単に加算し、オフセット値を中心座標に加算して頂点を更新するだけで、XまたはZ方向のいずれかでユーザーのキーを押すことに基づいて移動されます。
中心点に対する回転は、glRotatef()関数を使用して実装されます。
しかし、私は衝突検出計算のための頂点の座標を知る必要があります。 変換されたポリゴンの頂点座標を取得するだけで、マトリックス操作を自分で実行することはありませんか?OpenGlポリゴンの回転

答えて

2

だけで変換ポリゴンの頂点座標を取得するチャンスがあります...

OpenGLは、数学ライブラリではありません。これは描画のためのものです。また、固定機能OpenGLのマトリックス操作機能は廃止され、OpenGL-3コア以降も削除されています。

自分でマトリックス操作を実行しないでください。

これは実際にこれを行うための推奨方法です。覚えておいてください:OpenGLはあなたの描画ツールであり、3Dレンダラ - ゲーム - シミュレーション - エンジン - 数学 - ジオメトリツールキットではありません。

+0

ありがとうございました。本当に役に立ちました。 – itsraining

2

glRotatef関数は、画面上に回転を得るためにスタック上に存在する現在の行列と乗算される行列を作成します。その行列を得ることができたとしても、それをあなたのベクトルと掛け合わせて、あなたが望む値を得る必要があります。これは、あなたが数学を自分でやった場合に必要なことです。 datenwolfが言ったように、2次元または3次元の世界でオブジェクトを操作するために必要なすべてのものを実行する数学ライブラリを自分で作成する方が良いでしょう。