miércoles, 31 de octubre de 2012

Luces en polígonos no predefinidos.





#include "stdafx.h"
#include<GL\glut.h>
#include<math.h>

void Inicializacion(void);
void Dibuja(void);


int _tmain(int argc, _TCHAR* argv[])
{
glutInitDisplayMode(GLUT_RGB|GLUT_DEPTH|GLUT_DOUBLE);
glutInitWindowSize(600,600);
glutInitWindowPosition(200,200);
glutCreateWindow("Cubo en OpenGL");
Inicializacion();
glutDisplayFunc(Dibuja);
glutMainLoop();

return 0;
}



void Inicializacion(void){
glMatrixMode(GL_PROJECTION); //coordenadas objeto en 3D
glLoadIdentity(); //Matriz identidad
gluPerspective(70,1,0.1,100);
glMatrixMode(GL_MODELVIEW);
/*glTranslated(0,0,-10);
glRotated(-253,0,1,0);
*/glClearColor(1,1,1,0);
glShadeModel(GL_SMOOTH);
glEnable(GL_CULL_FACE); //
glCullFace(GL_BACK); //glCullFace determina qué polígonos deben de descartarse, en este caso los traceros.
glFrontFace(GL_CW); //EL polígono está en el sentido de las manesillas del reloj

}

void Dibuja(void){

glClear(GL_COLOR_BUFFER_BIT | GL_DEPTH_BUFFER_BIT);

glLoadIdentity();
GLfloat ambientlight[4]  =    {0.5f ,0.5f ,0.5f ,1.0f};
float glfLightPosition[4] = {0.0, 2, 7.0, 1.0};
float glfLightDiffuse[4] = {0.7, 0.7, 0.7, 1.0};
float glfLightSpecular[4] = {0.7, 0.7, 0.7, 1.0};

//glLightfv(GL_LIGHT0,GL_AMBIENT,ambientlight);
glLightfv(GL_LIGHT0, GL_POSITION, glfLightPosition); // Se definen las
glLightfv(GL_LIGHT0, GL_DIFFUSE, glfLightDiffuse); //carácterísticas de la
glLightfv(GL_LIGHT0, GL_SPECULAR, glfLightSpecular);// luces
 glEnable(GL_LIGHT0);
 glEnable(GL_LIGHTING);

//--------------------------------------------------
 


glPushMatrix();
float ambiental[4]={1,0,0,1};
 float especular[4]={0.5,0,0.5,1};
 
glMaterialfv(GL_FRONT, GL_AMBIENT_AND_DIFFUSE, ambiental);
glMaterialfv(GL_FRONT, GL_SPECULAR, especular);
glMaterialf(GL_FRONT, GL_SHININESS, 30);

glTranslated(0,0,-10);
glRotated(45,10,10,0);


glBegin(GL_QUADS);
//cara 1

glColor3f(0,0,1);
glNormal3d(-8,0,-8);
glVertex3d(-2,-2,2);
//glNormal3d(0,8,-8); 
glVertex3d(-2,2,2);
//glNormal3d(8,0,-8);
glVertex3d(2,2,2);
//glNormal3d(0,-8,-8);
glVertex3d(2,-2,2);

//cara2
glColor3f(1,0,1);
glNormal3d(0,0,8);
glVertex3d(2,2,-2);
glNormal3d(-8,0,0);
glVertex3d(-2,2,-2);
glVertex3d(-2,-2,-2);
glVertex3d(2,-2,-2);

//cara3
glColor3f(1,0,0);
glNormal3d(8,-8,8);
glVertex3d(-2,2,2);
//glNormal3d(8,-8,0);
glVertex3d(-2,-2,2);
//glNormal3d(8,8,-8);
glVertex3d(-2,-2,-2);
glVertex3d(-2,2,-2);

//cara 4

glColor3f(0,1,0);
glVertex3d(2,-2,2);
glVertex3d(2,2,2);
glVertex3d(2,2,-2);
glVertex3d(2,-2,-2);

//cara 5

glColor3f(1,1,0);
glVertex3d(-2,2,2);
glVertex3d(-2,2,-2);
glVertex3d(2,2,-2);
glVertex3d(2,2,2);

//cara 6

glColor3f(0,1,1);
glVertex3d(-2,-2,2);
glVertex3d(2,-2,2);
glVertex3d(2,-2,-2);
glVertex3d(-2,-2,-2);
glEnd();
glPopMatrix();



glutSwapBuffers();
}

lunes, 29 de octubre de 2012

Exposición de día de Muertos.



Para todos los alumnos(as) que deseen participar, el día 1 de noviembre, en la entrada del edificio E se llevará acabo una exposición de día de muertos para lo cual se les solicita la realización de unas calaveritas literarias, alguna calavera de papel, papel picado, etc.

Pueden entregar el material con la Lic. Dora Ortíz.

De antemano gracias y espero que participen. Saludos.

@rezzaca

miércoles, 24 de octubre de 2012

1er. Concurso de Altar de Muertos 3D 2012(Fase I).


El concurso es de carácter obligatorio para los grupos de graficación del Tecnológico de Lerdo de la carrera de Sistemas Computacionales que actualmente cursan la materia de Graficación.

Requisitos mínimos:


  • Velas: Representan la luz que alumbra el camino del difunto hacia el mas allá.
  • El camino: Debe haber un camino que permita volver al difunto para recibir la ofrenda y este mismo lo devolverá.
  • El perro negro: Este cuida el camino y ahuyenta a los malos espíritus, además de acompañar al difunto para que este no se pierda.
  • Incienso: Este es un elemento de alabanza.
  • El Petate: Este tiene varias funciones que van desde cama para que el anima descanse hasta mesa para colocar los alimentos.
  • Cruz de ceniza: Esta es para que al llegar al altar el espíritu pueda dejar sus últimas culpas.
  • Foto: Esta es para atraer el alma del difunto y que no se confunda, también es una forma de mostrar respeto hacia nuestro ser querido.
Requisitos técnicos:

  • Uso de listas.
  • Interacción.
  • Manejo de Luces y materiales.
Premiación de la primer fase:

1er. Lugar    Calificación: 100
2o. Lugar     Calificación: 95
3er. Lugar    Calificación: 92
4o. Lugar     Calificación: 90

Para todos los demás de 85 para atrás.

Sobre el jurado.

  • Se invitará para evaluar a los 4 primeros lugares a los ingenieros Antonio Mendoza y Ángel Candelas para el veredicto.
  • Previamente se escogerán los 4 mejores para la evaluación del concurso.
  • La persona que no entregue altar, lo deberá presentar en examen de regularización.

jueves, 18 de octubre de 2012

Práctica de luces y materiales.


// Practica5UII.cpp: archivo de proyecto principal.

#include "stdafx.h"
#include <glut.h>

void Inicializa();
void Dibuja();
int i;
void Anima();

float ambiental[4]={0, 0, 0, 1},
 difusa[4]={1, 1, 1, 1},
 especular[4]={1, 1, 1, 1},
 posicion[4]={5, 5, -5, 1};

void main(){
glutInitDisplayMode(GLUT_RGB | GLUT_DOUBLE | GLUT_DEPTH);
glutInitWindowSize(800, 800);
glutInitWindowPosition(100, 50);
glutCreateWindow("Practica5U2 - Elena");
glutDisplayFunc(Dibuja);
Inicializa();
glutMainLoop();
}

void Inicializa(){
glMatrixMode(GL_PROJECTION);
glLoadIdentity();
gluPerspective(90, 1, 0.1, 40);
glMatrixMode(GL_MODELVIEW);
glClearColor(0, 0, 0, 0);
glEnable(GL_DEPTH_TEST);
glShadeModel(GL_SMOOTH);
glLightfv(GL_LIGHT0, GL_AMBIENT, ambiental);
glLightfv(GL_LIGHT0, GL_DIFFUSE, difusa);
glLightfv(GL_LIGHT0, GL_SPECULAR, especular);
glLightfv(GL_LIGHT0, GL_POSITION, posicion);
glEnable(GL_LIGHT0);
glEnable(GL_LIGHTING);
//glLightModelfv(GL_LIGHT_MODEL_AMBIENT, ambiental);
glutIdleFunc(Anima);
}

void Anima(){
i++;
glutPostRedisplay();
}

void Dibuja(){
GLUquadricObj *ap;
glClear(GL_COLOR_BUFFER_BIT | GL_DEPTH_BUFFER_BIT);
ap = gluNewQuadric();
glLoadIdentity();
glTranslated(0, 0, -10);
glPushMatrix();
glTranslated(-6, 6, 0);
gluQuadricDrawStyle(ap, GLU_FILL);
gluQuadricNormals(ap, GLU_SMOOTH);
gluQuadricOrientation(ap, GLU_OUTSIDE);
//Esfera Verde
ambiental[0]=0.5;
ambiental[1]=1;
especular[0]=1;
especular[1]=1;
glMaterialfv(GL_FRONT, GL_AMBIENT_AND_DIFFUSE, ambiental);
glMaterialfv(GL_FRONT, GL_SPECULAR, especular);
glMaterialf(GL_FRONT, GL_SHININESS, 30);
gluSphere(ap, 2, 30, 30);
//Cilindro
glPopMatrix();
glPushMatrix();
glTranslated(-1.5, 7, 0);
glRotated(60, 1, 0, 0);
ambiental[0]=1;
ambiental[2]=1;
especular[0]=0;
especular[1]=0;
glMaterialfv(GL_FRONT, GL_AMBIENT_AND_DIFFUSE, ambiental);
glMaterialfv(GL_FRONT, GL_SPECULAR, especular);
glMaterialf(GL_FRONT, GL_SHININESS, 5);
gluCylinder(ap, 1, 1, 3.5, 20, 20);
//Disco
glPopMatrix();
glPushMatrix();
glTranslated(2.5, 6.5, 0);
glRotated(60, 0, 1, 1);
ambiental[2]=0;
glMaterialfv(GL_FRONT, GL_AMBIENT_AND_DIFFUSE, ambiental);
gluDisk(ap, 0.5, 2.5, 30, 10);
//Disco Parcial
glPopMatrix();
glPushMatrix();
glTranslated(6.5, 6.5, 0);
glRotated(50, 1, 0, 0);
ambiental[1]=0;
glMaterialfv(GL_FRONT, GL_AMBIENT_AND_DIFFUSE, ambiental);
gluPartialDisk(ap, 0.5, 2.5, 30, 10, 40, 180);
gluDeleteQuadric(ap);
//Cono
glPopMatrix();
glPushMatrix();
glTranslated(-6, 0, 0);
ambiental[1]=0.5;
especular[1]=1;
especular[2]=0;
glMaterialfv(GL_FRONT, GL_AMBIENT_AND_DIFFUSE, ambiental);
glMaterialfv(GL_FRONT, GL_SPECULAR, especular);
glMaterialf(GL_FRONT, GL_SHININESS, 10);
glutSolidCone(2, 4, 10, 20);
//Cubo
glPopMatrix();
glPushMatrix();
glTranslated(-1.8, 0, 0);
glRotated(30, 1, 1, 0);
ambiental[0]=0;
ambiental[1]=0.5;
especular[1]=0;
glMaterialfv(GL_FRONT, GL_AMBIENT_AND_DIFFUSE, ambiental);
glMaterialfv(GL_FRONT, GL_SPECULAR, especular);
glMaterialf(GL_FRONT, GL_SHININESS, 10);
glutSolidCube(3);
//Tetrahedro
glPopMatrix();
glPushMatrix();
glTranslated(2.5, 0, 0);
glRotated(10, 0, 1, 1);
glScaled(2.5, 2.5, 2.5);
ambiental[0]=0.5;
ambiental[1]=0.6;
glMaterialfv(GL_FRONT, GL_AMBIENT_AND_DIFFUSE, ambiental);
glMaterialfv(GL_FRONT, GL_SPECULAR, especular);
glMaterialf(GL_FRONT, GL_SHININESS, 1);
glutSolidTetrahedron();
//Octahedro
glPopMatrix();
glPushMatrix();
glTranslated(6.5, 0, 0);
glRotated(50, 1, 1, 1);
glScaled(2.5, 2.5, 2.5);
ambiental[1]=0;
ambiental[2]=1;
especular[1]=1;
especular[2]=1;
glMaterialfv(GL_FRONT, GL_AMBIENT_AND_DIFFUSE, ambiental);
glMaterialfv(GL_FRONT, GL_SPECULAR, especular);
glMaterialf(GL_FRONT, GL_SHININESS, 1);
glutSolidOctahedron();
//Dodecahedro
glPopMatrix();
glPushMatrix();
glTranslated(-7, -6, 0);
ambiental[1]=1;
especular[2]=0;
glMaterialfv(GL_FRONT, GL_AMBIENT_AND_DIFFUSE, ambiental);
glMaterialfv(GL_FRONT, GL_SPECULAR, especular);
glMaterialf(GL_FRONT, GL_SHININESS, 10);
glutSolidDodecahedron();
//Icosahedro
glPopMatrix();
glPushMatrix();
glTranslated(-3, -5.5, 0);
glScaled(2.2, 2.2, 2.2);
ambiental[1]=0;
especular[2]=0.5;
glMaterialfv(GL_FRONT, GL_AMBIENT_AND_DIFFUSE, ambiental);
glMaterialfv(GL_FRONT, GL_SPECULAR, especular);
glMaterialf(GL_FRONT, GL_SHININESS, 10);
glutSolidIcosahedron();
//Toroide
glPopMatrix();
glPushMatrix();
glTranslated(2, -5.5, 0);
ambiental[0]=0.8;
glMaterialfv(GL_FRONT, GL_AMBIENT_AND_DIFFUSE, ambiental);
glMaterialfv(GL_FRONT, GL_SPECULAR, especular);
glMaterialf(GL_FRONT, GL_SHININESS, 5);
glutWireTorus(1, 1.5, 10, 10);
//Tetera
glPopMatrix();
glPushMatrix();
glTranslated(7, -5.5, 0);
glRotated(-10, 0, 1, 1);
ambiental[0]=0;
ambiental[2]=1;
especular[1]=1;
especular[2]=1;
glMaterialfv(GL_FRONT, GL_AMBIENT_AND_DIFFUSE, ambiental);
glMaterialfv(GL_FRONT, GL_SPECULAR, especular);
glMaterialf(GL_FRONT, GL_SHININESS, 10);
glutWireTeapot(1.5);
glutSwapBuffers();
}