#include<glut.h>
#include<stdlib.h>
#include<math.h>
#include<iostream>
using namespace std;
GLsizei winWidth=500, winHeight=500;
class wcPt3D
{
public:
GLfloat x,y,z;
};
GLfloat ctrlPts[100][3];
int a;
void displayFcn(void)
{
glMap1f(GL_MAP1_VERTEX_3,0.0,1.0,3,a,*ctrlPts);
glEnable(GL_MAP1_VERTEX_3);
GLint k;
glColor3f(1.0,0.0,0.0);
glBegin(GL_POINTS);
for(k=0;k<50;k++) glEvalCoord1f(GLfloat(k)/50.0);
glEnd();
glColor3f(1.0,1.0,1.0); glPointSize(5.0);
glBegin(GL_POINT);
for(k=0;k<4;k++) glVertex3fv(ctrlPts[k]);
glEnd();
glColor3f(1.0,0.0,1.0); glLineWidth(2.0);
glBegin(GL_LINE_STRIP);
for(k=0;k<a;k++) glVertex3fv(&ctrlPts[k][0]);
glEnd();
glFlush();
}
void winReshapeFcn (GLint newWidth, GLint newHeight)
{
glViewport (0, 0, newHeight, newHeight);
glMatrixMode (GL_PROJECTION); glLoadIdentity ( );
gluOrtho2D (-newWidth/2, newWidth/2, -newHeight/2, newHeight/2);
glClear (GL_COLOR_BUFFER_BIT);
}
void main (int argc, char** argv)
{
int b;
cout<<"请输入控制顶点的个数:"<<endl;
cin>>a;
cout<<"请分别输入控制顶点的x,y坐标:"<<endl;
for(b=0;b<a;b++)
{cin>>ctrlPts[b][0]>>ctrlPts[b][1];
ctrlPts[b][2]=0.0;
}
glutInit (&argc, argv);
glutInitDisplayMode (GLUT_SINGLE | GLUT_RGB);
glutInitWindowPosition (50, 50);
glutInitWindowSize (winWidth, winHeight);
glutCreateWindow ("Bezier Curve");
glClearColor (1.0, 1.0, 1.0, 0.0);
glutDisplayFunc (displayFcn);
glutReshapeFunc (winReshapeFcn);
glutMainLoop ( );
}
opengl.rar_OpenGL多边形
版权申诉
131 浏览量
2022-09-19
19:33:41
上传
评论
收藏 914B RAR 举报
alvarocfc
- 粉丝: 105
- 资源: 1万+
评论0