Actividad 4
Codigo(piramide)
Investigar como se manipulan las transformaciones geométricas en opengl.Con la imagen de su pirámide y las transformaciones geométricas diseñe un programa que rote su pirámide sobre el eje "x" y el eje "y", se mueva de izquierda a derecha y de derecha a izquierda, y reduzca o amplié la piramide.
'
#include <GL/glut.h>
GLfloat tx= 1.0f;
GLfloat ty = 1.0f;
GLfloat ax = 0.0f;
GLfloat ay = 0.0f;
GLfloat escala = 1.0f;
void reshape(int width, int height){
glViewport(0,0,width,height);
glMatrixMode(GL_PROJECTION);
glLoadIdentity();
glOrtho(-15,15,-15,15,-15,15);
glMatrixMode(GL_MODELVIEW);
}
void DibujaPiramide(void)
{
glColor3f (0.0, 1.0, 1.0);
glBegin(GL_POLYGON);
glVertex3f (1.5, 0.0, 0.0);
glVertex3f (0.0, 0.0, 1.5);
glVertex3f (0.0, 5.0, 0.0);
glEnd();
glColor3f(0.60,0.5,0.70);
glBegin(GL_POLYGON);
glVertex3f (0.0, 0.0, 1.5);
glVertex3f (-1.5, 0.0, 0.0);
glVertex3f (0.0, 5.0, 0.0);
glEnd();
glColor3f(1.0,0.0,0.0);
glBegin(GL_POLYGON);
glVertex3f (-1.5, 0.0, 0.0);
glVertex3f (0.0, 0.0, -1.5);
glVertex3f (0.0, 5.0, 0.0);
glEnd();
glColor3f(0.0,1.0,0.0);
glBegin(GL_POLYGON);
glVertex3f (1.5, 0.0, 0.0);
glVertex3f (0.0, 0.0, -1.5);
glVertex3f (0.0, 5.0, 0.0);
glEnd();
glColor3f(1.0,0.0,1.0);
glBegin(GL_POLYGON);
glVertex3f (1.5, 0.0, 0.0);
glVertex3f (0.0, 0.0, 1.5);
glVertex3f (-1.5, 0.0, 0.0);
glVertex3f (0.0, 0.0, -1.5);
glEnd();
}
void display(){
glClear(GL_COLOR_BUFFER_BIT| GL_DEPTH_BUFFER_BIT);
glLoadIdentity();
glTranslatef(tx,ty,0.0f);
glScalef(escala, escala, escala);
glRotatef(ax, 1.0f, 0.0f, 0.0f);
glRotatef(ay, 0.0f, 1.0f, 0.0f);
DibujaPiramide();
glFlush();
glutSwapBuffers();
ax+=0.1f;
ay+=0.1f;
}
void init(){
glClearColor(0,0,0,0);
glEnable(GL_DEPTH_TEST);
}
void idle()
{
display();
}
void Teclado(unsigned char key, int x, int y){
switch (key){
case 'a'://presionar tecla a
if( ty<10.0 ){ty = ty + 1.0;}//se mueve en y positivo(arriba)
if(ty>0.1 && ty<4){escala = ty;}//y aumenta
break;
case 'b'://presionar tecla b
if( ty>-10.0 ){ty = ty - 1.0;}//se mueve en y negatibo(abajo)
if(ty>0.1 && ty<4){escala = ty;}//y disminuye
break;
case 'd'://presionar tecla d
if( tx<10.0 ){tx = tx + 1.0;}//se mueve en x positivo(Derecha)
break;
case 'i'://presionar tecla i
if( tx>-10.0 ){tx = tx - 1.0;}//se mueve en x negativo(Izquierda)
break;
}
switch (key) {
case 27:
exit(0);
break;
}
}
int main(int argc, char **argv)
{
glutInit(&argc, argv);
glutInitDisplayMode(GLUT_DOUBLE|GLUT_RGB);
glutInitWindowPosition(400,200);
glutInitWindowSize(800,500);
glutCreateWindow("Ruben De La Cruz Venegas");
init();glutDisplayFunc(display);
glutReshapeFunc(reshape);
glutIdleFunc(idle);
glutKeyboardFunc(Teclado);
glutMainLoop();
return 0;}
Actividad 6
Usando su modelo de piramide 3d aplique las transformaciones
a)Vector Traslación (-2,-2,0).
b) Escalación (.5,.5,.5) Rotación.
actividad#7
Usando su modelo de piramide, con los siguientes puntos dibuje el polígono correspondiente y aplique las siguientes transformaciones:
p0=(2,2) , p1(7,2), p2(7,7), p3(2,7)
Escriba todos los cálculos realizados.
a) Vector Traslación (-2,-2) b) Escalación (0.5,0.5) c) Rotacion 45grados eje z tomando el p0 como base.
No hay comentarios.:
Publicar un comentario