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 回答