Generar un gráfico matemático con OpenGL
Las descargas incluyen el archivo ejecutable y los DLL's necesarios.
El programa no tiene analizador sintáctico, la ecuación no puede modificarse en tiempo de ejecución.
- Code: Seleccionar todo
- void plotFunc3D(float d)
- {
- glNewList(GLobj, GL_COMPILE);
- glEnable(GL_NORMALIZE);
- glEnable(GL_LIGHTING);
- float i,j,k;
- float u[3], v[3], w[3], x[3], n[3];
- for (i = x_min; i<x_max; i+= d){
- for (j = y_min; j<<y_max; j+= d){
- glBegin(GL_TRIANGLES);
- evalfunc(i,j, &k);
- u[0] = i; u[1] = j; u[2] = k;//cos(i*i+j*j);
- evalfunc(i+d,j, &k);
- v[0] = i+d; v[1] = j; v[2] = k;//cos((i+d)*(i+d)+j*j); A
- evalfunc(i+d,j+d, &k);
- w[0] = i+d; w[1] = j+d; w[2] = k;//cos((i+d)*(i+d)+(j+d)*(j+d));
- evalfunc(i,j+d, &k);
- x[0] = i; x[1] = j+d; x[2] = k;//cos(i*i+(j+d)*(j+d));
- cross(&n[0],u,v,w);
- glNormal3f(n[0], n[1], n[2]);
- glVertex3f(u[0], u[1], u[2]);
- glVertex3f(v[0], v[1], v[2]);
- glVertex3f(w[0], w[1], w[2]);
- cross(&n[0],u,w,x);
- glNormal3f(n[0], n[1], n[2]);
- glVertex3f(u[0], u[1], u[2]);
- glVertex3f(w[0], w[1], w[2]);
- glVertex3f(x[0], x[1], x[2]);
- glEnd();
- }
- }
- glDisable(GL_LIGHTING);
- glDisable(GL_NORMALIZE);
- glEndList();
- }
Función Principal
- Code: Seleccionar todo
- int main(){
- glutInitWindowSize(width, width);
- glutInitWindowPosition(200,200);
- glutInitDisplayMode(GLUT_RGBA|GLUT_DEPTH|GLUT_DOUBLE);
- (void)glutCreateWindow("glut demo");
- initGL();
- glutDisplayFunc(paintGL);
- glutReshapeFunc(resizeGL);
- glutMouseFunc(mousePressGL);
- glutMotionFunc(mouseMoveGL);
- glutKeyboardFunc(keyPressGL);
- glutMainLoop();
- return 0;
- }
Otros Artículos en esta sección
-
Una clase que visualiza el resultado de una consulta SQL en un cuadro combinado (CCombobox) utilizando una conexion DAO.Hola a todos de nuevo fanáticos de la programación les presento un programa que genera un pupiletras o sopa de letras a partir de palabras al azar.Es una técnica para reducir el parpadeo producido al dibujar en la pantalla, es muy útil para desarrollar juegos por que éstos suelen requerir refrescamiento continuo de pantalla.¿Alguna duda? Sientete libre de hacer tus pruntas en nuestro:

foro deVisual C++ »
