测试OpenGL中的角度是否以逆时针为正
//测试角度是否以逆时针为正
#define FREEGLUT_STATIC
#include <GL/glut.h>
#include <math.h>
GLfloat x=0.0f;
GLfloat y=0.0f;
GLfloat fRange=15.0f;
void SetupRC()
{
glClearColor(0.0f,0.0f,0.0f,1.0f);
}
void RenderScene()
{
glClear(GL_COLOR_BUFFER_BIT);
glPolygonMode(GL_FRONT,GL_LINE);
glBegin(GL_TRIANGLE_FAN);
glColor3f(1.0f,0.0f,0.0f);//red
glVertex3f(0.0f,0.0f,0.0f);
glVertex3f(10.0f*cos(0.0),10.0f*sin(0.0),0.0f);
glColor3f(0.0f,1.0f,0.0f);//green
glVertex3f(10.0f*cos(3.14/6),10.0f*sin(3.14/6),0.0f);
glColor3f(0.0f,0.0f,1.0f);//blue
glVertex3f(10.0f*cos(3.14/2),10.0f*sin(3.14/2),0.0f);
glEnd();
glutSwapBuffers();
}
void ChangeSize(int w,int h)
{
if(h==0)
h=1;
glMatrixMode(GL_PROJECTION);
glLoadIdentity();
if(w<=h)
glOrtho(-fRange,fRange,-fRange,fRange*h/w,1.0f,-1.0f);
else
glOrtho(-fRange,fRange*w/h,-fRange,fRange,1.0f,-1.0f);
glMatrixMode(GL_MODELVIEW);
glLoadIdentity();
glutPostRedisplay();
}
int main(int argc,char** argv)
{
glutInit(&argc,argv);
glutInitWindowSize(800,600);
glutCreateWindow("Tesing if Angle is positive along the CW direction");
glutInitDisplayMode(GLUT_DOUBLE|GLUT_RGBA);
glutDisplayFunc(RenderScene);
glutReshapeFunc(ChangeSize);
SetupRC();
glutMainLoop();
return 0;
}
程序中设置的正面(GL_FRONT)为边框模式(GL_LINE),而背面为默认的填充模式(GL_FILL)。通过指定的三个顶点的颜色顺序RGB,可以证明OpenGL中的角度以逆时针为正。
有图为证:
(几天后)更正一下:其实仔细想想,就会发现上面实属“谬论”。原因:你拿sin cos值来说事啊,他们的正负是数学真理,跟你逆时针 顺时针没有任何关系啊。sin值正了,就在y的正半轴呗-.- 如果真要测试OGL是否以逆时针角度为正的话,可以测试glRotatef函数:见http://www.cnblogs.com/tupx/articles/2996280.html

浙公网安备 33010602011771号