有没有办法在使用openGL应用转换后跟踪点

时间:2014-06-30 02:52:51

标签: c++ c opengl

我试图找到一种方法来在应用变换后跟踪x,y,z中的任意点。

像这样的东西

 glTranslated(0,2,4);
 glScaled(3,4,5);
 glTranslated(2,4,5);
 glRotated(24,0,1,0);
 point = Point(3,4,2)


 printf ("the point is now in %f,%f and %f",point.x,point.y,point.z);

我正在使用C和openGL 2.

1 个答案:

答案 0 :(得分:0)

如果您不想复制OpenGL构建和组合矩阵的方式,最简单的方法可能是获取当前矩阵:

GLfloat mat[16];
glGetFloatv(GL_MODELVIEW_MATRIX, mat);

然后,您可以将此矩阵与要变换的点相乘。请记住,OpenGL以列主要顺序存储矩阵。因此,要将其应用于点(x, y, z),乘法将是:

xNew = mat[0] * x + mat[4] * y + mat[8] * z + mat[12];
yNew = mat[1] * x + mat[5] * y + mat[9] * z + mat[13];
zNew = mat[2] * x + mat[6] * y + mat[10] * z + mat[14];