我的代码如下;我想获得按下键后在平面上移动的三角形的坐标位置。如果我的代码有误,请更正。我是OpenGL的初学者。
float rot=90;
float forwd=0;
float uprwd=0;
switch (key) {
case 'q':
exit(0);
break;
case 'a':
{
forwd-=0.2;
}
break;
case 'd':
{
forwd+=0.2;
}
break;
case 'w':
{
uprwd+=0.2;
}
break;
case 's':
{
uprwd-=0.2;
}
break;
case 'r':
{
rot+=20;
}
break;
case 't':
{
rot-=20;
}
break;
}
void display (void) {
{
glPushMatrix();
glLoadIdentity();
glTranslatef(forwd,uprwd,-6);
glRotatef(rot, 0.0, 0.0, 1.0);
glBegin(GL_TRIANGLES);
glVertex3f( 0.2, 0.0, 0.0 );
glVertex3f( 0.0, 0.2, 0.0 );
glVertex3f( 0.0, 0.0, 0.2 );
glEnd();
glPopMatrix();
glutSwapBuffers();
}
如何在平面上找到三角形的坐标位置?它也在平面上旋转和移动。感谢。
答案 0 :(得分:1)
旋转和/或平移三角形时,您正在更改其坐标。 glTransltef和glRotatef正在将变换矩阵应用于三角形的基本位置,例如(0.2,0.0,0.0)。如果您打算跟踪三角形的新位置,还必须将这些转换(Rotation Matrix,Translation)应用于跟踪三角坐标的矢量。