0

たとえば、点 [x,y,z] が与えられたとします。いくつかの変換マトリックス (スケーリング、回転、平行移動で構成される) を適用します。最終的に変換されたポイントの座標を取得するための独自のルーチンを作成できることは間違いありません。同じためにopenglに組み込み関数はありますか..

このタイプの関数は十分に最適化されている可能性があり、私が書くものはそれほど効率的ではないかもしれません.

4

1 に答える 1

0

使用できます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のような適切な行列ライブラリを使用する方がよいでしょう。これは行列とベクトルの乗算に過ぎないためです。

于 2012-11-19T18:36:19.793 に答える