dポイントプレゼントキャンペーン実施中!

openGLで
glRotatef(angle, 0.0, 0.0, 1.0);
でz軸について回転させたのですが、
オブジェクトの点の座標は変わっていませんでした。

オブジェクトの座標自体を変更してZ軸について回転させたいのですが,できますでしょうか.

分かりにくい質問かもしれませんが,お願いします。

A 回答 (2件)

多数の点からなるオブジェクトの座標変換(アフィン変換)を、わざわざ外部で計算する手間を省くのがopenGL等の役割でしょう。

。。

もしかして、openGLをアフィン変換関数として用い、変換後の座標を取得したいと言うことでしょうか?

もしそうならば、openGLのglRotate関数が行っている作業をソースコードから抜き出して、外部で処理させればいいでしょう。

ソースコードを参照しなくても、glRotate内部で行っている行列演算については、下記にて詳しく述べられています。
http://wisdom.sakura.ne.jp/system/opengl/gl11.html
    • good
    • 0
この回答へのお礼

ご回答ありがとうございます。

変換後の座標取得がしたかったもので^^;
URLありがとうございました。
御陰様でできました。

お礼日時:2010/01/26 22:27

glRotate(angle,0.0, 0.0, 1.0)は、元の座標自体を変更するということはありません。


オブジェクトの元の座標をもとにして、回転させた位置にオブジェクトを表示させているだけですから。

また、openGLの関数で、座標自体を書き換えてしまう関数はないと思います。
OpenGLはヴューアのためのAPIです。

ということは、座標自体をいじくりたいならば、自分で変換行列を作成して、その積を取るしかないと思います。
透視投影はOpenGLで出来ますので、変換行列自体は、簡単な3×3の行列計算でできます。

あと、余談ですが、
OpenGLでオブジェクトを回転させるために、座標自体を変更する必要はないと思います。
なぜなら、そういう面倒くさいことをしなくていいように、glRotate関数などが、ライブラリとして入っているわけですから。
    • good
    • 0
この回答へのお礼

ご回答ありがとうございます。

回転後の座標が欲しかったため質問させていただきました。
行列を使ってできました。
ありがとうございました。

お礼日時:2010/01/26 22:29

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!