- ベストアンサー
GLで座標を変えて回転させたい
openGLで glRotatef(angle, 0.0, 0.0, 1.0); でz軸について回転させたのですが、 オブジェクトの点の座標は変わっていませんでした。 オブジェクトの座標自体を変更してZ軸について回転させたいのですが,できますでしょうか. 分かりにくい質問かもしれませんが,お願いします。
- みんなの回答 (2)
- 専門家の回答
質問者が選んだベストアンサー
多数の点からなるオブジェクトの座標変換(アフィン変換)を、わざわざ外部で計算する手間を省くのがopenGL等の役割でしょう。。。 もしかして、openGLをアフィン変換関数として用い、変換後の座標を取得したいと言うことでしょうか? もしそうならば、openGLのglRotate関数が行っている作業をソースコードから抜き出して、外部で処理させればいいでしょう。 ソースコードを参照しなくても、glRotate内部で行っている行列演算については、下記にて詳しく述べられています。 http://wisdom.sakura.ne.jp/system/opengl/gl11.html
その他の回答 (1)
- kopanda116
- ベストアンサー率37% (88/232)
glRotate(angle,0.0, 0.0, 1.0)は、元の座標自体を変更するということはありません。 オブジェクトの元の座標をもとにして、回転させた位置にオブジェクトを表示させているだけですから。 また、openGLの関数で、座標自体を書き換えてしまう関数はないと思います。 OpenGLはヴューアのためのAPIです。 ということは、座標自体をいじくりたいならば、自分で変換行列を作成して、その積を取るしかないと思います。 透視投影はOpenGLで出来ますので、変換行列自体は、簡単な3×3の行列計算でできます。 あと、余談ですが、 OpenGLでオブジェクトを回転させるために、座標自体を変更する必要はないと思います。 なぜなら、そういう面倒くさいことをしなくていいように、glRotate関数などが、ライブラリとして入っているわけですから。
お礼
ご回答ありがとうございます。 回転後の座標が欲しかったため質問させていただきました。 行列を使ってできました。 ありがとうございました。
お礼
ご回答ありがとうございます。 変換後の座標取得がしたかったもので^^; URLありがとうございました。 御陰様でできました。