Cicloide Con Opengl En Visual C++
Enviado por norvic • 2 de Diciembre de 2012 • 438 Palabras (2 Páginas) • 658 Visitas
#include <stdlib.h>
#include <math.h>
#include <GL/glut.h>
#define GL_PI 3.1416f
void init(void);
void display(void);
void reshape(int,int);
void main(int argc, char** argv)
{
glutInit(&argc, argv); //con esto tomamos los valores necesarios para MAIN
glutInitDisplayMode(GLUT_SINGLE|GLUT_RGB); //ACTUVAMOS parametros: rojo, amarillo y azul
glutInitWindowSize(500,500); //ancho y alto d nuestra ventana desplegable
glutInitWindowPosition(100,100); //posicion de la ventana desplegable en nuestra pantalla
//glutCreateWindow(argv[0]);
glutCreateWindow("cicloide x villacorta"); //crea la ventana desplegable y la nombra
init(); //se indica como sera el coloreado interno
glutDisplayFunc(display); //indicamos el nombre de la funcion q uso para el dibujo
glutReshapeFunc(reshape); //controla el cambio de tamaño de ventana
glutMainLoop(); //ciclo infinito para realizar una accion "espectativa"
}
void init(void)
{
// por la linea glutInitDisplayMode(GLUT_SINGLE|GLUT_RGB); aca damos color
glClearColor(0.0,0.0,0.0,0.0); //color de fondo
glShadeModel(GL_FLAT);
//glShadeModel(GL_SMOOTH);
glColor3f(0,1,0.2); //color de trazo
}
//funcion q dibuja
void display(void)
{
GLfloat ang, rm = 1.0f, rma = 5*rm, x, y;
glClear(GL_COLOR_BUFFER_BIT);
glPushMatrix(); // salva el estado actual de la matriz
glBegin(GL_LINE_LOOP);
for (ang = 0.0f; ang < 2 * GL_PI; ang += 0.01f) //este for va de 0 a pi
{
x = (rma - rm)*cos(ang) + rm*cos((rma - rm)/rm* ang);
y = (rma - rm)*sin(ang) - rm*sin((rma - rm)/rm* ang);
glVertex2f(x,y);
}//con este for dibujamos el cicloide
glEnd();
glPopMatrix(); // reecupera el estado del matriz
glFlush();
}
void reshape(int w, int h)
{
glViewport(0,0,(GLsizei)w, (GLsizei)h);
glMatrixMode(GL_PROJECTION);
glLoadIdentity();
glOrtho(-10.0,10.0,-10.0,10,-10.0,10.0);
glMatrixMode(GL_MODELVIEW);
glLoadIdentity();
}
...