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
-
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.He aquí un programa que grafica todo tipo de funciones gracias a su interprete que utiliza un Analizador Léxico, Analizador Sintáctico, y un Analizador semántico.Es un control con el que puedes visualizar imágenes en formularios MFC, puede cargar Bitmaps de 16, 256 y 24 Bits.¿Alguna duda? Sientete libre de hacer tus pruntas en nuestro:
foro deVisual C++ »