たとえば、点 [x,y,z] が与えられたとします。いくつかの変換マトリックス (スケーリング、回転、平行移動で構成される) を適用します。最終的に変換されたポイントの座標を取得するための独自のルーチンを作成できることは間違いありません。同じためにopenglに組み込み関数はありますか..
このタイプの関数は十分に最適化されている可能性があり、私が書くものはそれほど効率的ではないかもしれません.
たとえば、点 [x,y,z] が与えられたとします。いくつかの変換マトリックス (スケーリング、回転、平行移動で構成される) を適用します。最終的に変換されたポイントの座標を取得するための独自のルーチンを作成できることは間違いありません。同じためにopenglに組み込み関数はありますか..
このタイプの関数は十分に最適化されている可能性があり、私が書くものはそれほど効率的ではないかもしれません.
使用できますgluProject()
:
glMatrixMode( GL_MODELVIEW );
glLoadIdentity();
glRotatef( 90, 0, 0, 1 );
GLdouble modelview[16] = { 0 };
glGetDoublev( GL_MODELVIEW_MATRIX, modelview );
GLdouble identity[16] = {
1, 0, 0, 0,
0, 1, 0, 0,
0, 0, 1, 0,
0, 0, 0, 1
};
GLint view[4] = { -1, -1, 2, 2 };
// rotate (1,0,0) by 90 degrees around the Z axis:
double x, y, z;
gluProject( 1, 0, 0, modelview, identity, view, &x, &y, &z );
z = ( z * 2 ) - 1;
// x,y,z should equal (0,1,0)
ただし、 Eigenのような適切な行列ライブラリを使用する方がよいでしょう。これは行列とベクトルの乗算に過ぎないためです。