opengl 问题

2025-03-09 10:17:35
推荐回答(2个)
回答1:

你这个显然是要绕Z轴旋转
虽然没用过opengl,但对于类似的东西还是用过不少。估计opengl的旋转函数用的可能2种情况
一种是roll, pitch 和 yaw。分别代表沿x,y,z轴旋转。所以你的情况只要roll,pitch都设为0,yaw设为120度或者想要的弧度值就行了。具体是度还是弧度,看你函数的需求。
另一种是三个值代表旋转轴,一个值代表旋转的度数。这种情况自然是旋转轴为0,0,1,度数是120或2pi/3了 。当然参数有可能是旋转轴在前,角度在后

我擦。我网上查了查,你旋转函数没用错,是你图画错了,你的图多横移了25个单位
void symbol()
{
glBegin(GL_LINE_LOOP);
glVertex2f(-5.0,30.0);
glVertex2f(-5.0,20.0);
glVertex2f(0.0,10.0);
glvertex2f(5.0,20.0);
glvertex2f(5.0,30.0);
glvertex2f(0.0,20.0);
glEnd();
}

这样应该就对了~~

回答2:

欢迎来到OGL的大坑。。
LZ要记住OGL是个状态机,例如glRotaef()这个函数会它后面所有的绘制有效果,因为它是通过改变当前的变换矩阵来实现旋转的。
在每次执行这些rotate, translate之类的变换之前,最后用glPushMatrix()来保存当前的矩阵,在绘制完相应的东西后调用glPopMatrix()来还原矩阵。

你问题里的旋转可以这样实现(3个部分分别处理)
先保存矩阵;
绕Z轴旋转;
还原矩阵;