#include <GL/glut.h>
int maxY = 537;
void init(void){
glClearColor(0.09, 0.36, 0.478, 0.0);
glMatrixMode(GL_PROJECTION);
gluOrtho2D(0.0, 585, 0.0, 537);
}
void bezier4p(GLfloat mat[][4][3], int tam, int w){
glLineWidth(w);
for(int i=0; i<tam; i++){
glMap1f(GL_MAP1_VERTEX_3, 0.0, 1, 3, 4, &mat[i][0][0]);
glEnable(GL_MAP1_VERTEX_3); //activa el evaluador
glMapGrid1f(250, 0.0, 1.0);
glEvalMesh1(GL_LINE, 0, 250);
glDisable(GL_MAP1_VERTEX_3);
}
}
void CurvadeBezier(void){
glClear(GL_COLOR_BUFFER_BIT);
GLfloat cuerpo[8][4][3] = {
{ {267,maxY-78,0} , {297,maxY-146,0} , {297,maxY-146,0} , {216,maxY-248,0} },
{ {216,maxY-248,0} , {185,maxY-299,0} , {217,maxY-387,0} , {297, maxY-408,0} },
{ {297,maxY-408,0} , {413,maxY-438,0} , {505,maxY-347,0} , {445, maxY-246,0} },
{ {445, maxY-246,0} , {370,maxY-158,0} , {370,maxY-158,0} , {400,maxY-89,0} },
{ {400,maxY-89,0} , {362,maxY-118,0} , {362,maxY-118,0} , {351,maxY-152,0} },
{ {351,maxY-152,0} , {336,maxY-103,0} , {336,maxY-103,0} , {360,maxY-7,0} },
{ {360,maxY-7,0} , {300,maxY-40,0} , {300,maxY-40,0} , {320,maxY-156,0} },
{ {320,maxY-156,0} , {307,maxY-96,0} , {307,maxY-96,0} , {265,maxY-80,0} }
};
bezier4p(cuerpo, 8, 7);
glFlush();
}
int main(void){
glutInitWindowSize(600, 600);
glutCreateWindow("Curva de Bezier");
init();
glutDisplayFunc(CurvadeBezier);
glutMainLoop();
}