Practica 4
#include </usr/include/GL/glut.h>
#include <stdlib.h>
#include <math.h>
#include <stdio.h>
#define PI 3.141592
int anchoV=2;
int altoV=2;
float incrx=0,incry=0,inc=0.1,dx,dy;
int ms00=2000;
int seg=0,min=15, hora=60;
int dirTec=3;
int ancho=128,alto=128;
unsigned char * datos;//es un apuntador hacia la variable datos
void leerImagen(){
FILE *imagen;
imagen=fopen("/home/artur/Escritorio/boy.raw","rb");
datos=(unsigned char*)malloc(ancho*alto*3);//malloc sirve para partar memoria se aparta ancho por alto por 3
if(imagen==NULL){
printf("Error: No imagen\n");
}else{printf("OK: Imagen cargada correctamente\n");}
fread(datos,ancho*alto*3,1,imagen);
fclose(imagen);
}
void usarTexturas(){
glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_MAG_FILTER, GL_LINEAR);
glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_MIN_FILTER, GL_LINEAR);
glTexImage2D(GL_TEXTURE_2D, 0, GL_RGB, ancho, alto, 0, GL_RGB, GL_UNSIGNED_BYTE, datos);
}
void key(unsigned char c, int x, int y)
{
if (c==27){
exit(0);
}
if (c=='a'|| c=='A'){
dirTec=4;
}
glutPostRedisplay();
}
void circulo(float cx,float cy,float radio,float r,float g,float b,float a1,float a2){
glBegin(GL_POLYGON);
glColor3f(1,1,1);
for (float i=a1; i<a2; i+=0.01)
{
glTexCoord2f(cos(i)/2+0.5,sin(i)/2+.5);glVertex2f(cos(i)/2+0.5,sin(i)/2+.5);
//dx=.5*cos(i)+cx;
//dy=.5*sin(i)+cy;
//glTexCoord2f(dx,dy);glVertex2f(dx, dy);
}
glEnd();
}
void cuadro(){ //FunciOn para dibujar el domino
glColor3f(1, 1, 1);
glBegin(GL_QUADS);
glTexCoord2f(0.0, 1.0);glVertex2f(-10,-10);
glTexCoord2f(1.0, 1.0);glVertex2f(10,-10);
glTexCoord2f(1.0, 0.0);glVertex2f(10,10);
glTexCoord2f(0.0, 0.0);glVertex2f(-10,10);
glEnd();
}
void linea(){
glLineWidth(3.0f);
glBegin(GL_LINES);
glVertex2f(0, 0);
glVertex2f(0, .4);
glEnd();
}
void temporizador(int value) {
switch (value) {
case 1 :
glutTimerFunc(1000,temporizador,1);
printf("Segundo\r");
seg=seg-6;
if(seg == -360){seg=0;}
break;
case 2 :
glutTimerFunc(60000,temporizador,2);
printf("Minuto\r");
min=min-6;
if(min == -360){min=0;}
break;
case 3 :
glutTimerFunc(360000,temporizador,2);
printf("Hora\r");
hora=hora-6;
if(hora == -360){hora=0;}
break;
}
glutPostRedisplay();
}
void display(void){
glClear(GL_COLOR_BUFFER_BIT);
glPushMatrix();
glRotatef(180,0,0,1);
glTranslatef(-0.5f,-0.5f,0);
circulo(0,0,1,1,0,0,0,2*3.1416);
glPopMatrix();
glPushMatrix();
glColor3f(0,0,1);
glRotatef(seg,0,0,1);
linea();
glPopMatrix();
glPushMatrix();
glColor3f(0,1,0);
glRotatef(min,0,0,1);
glScalef(.5, 0.8, 0.5);
linea();
glPopMatrix();
glPushMatrix();
glColor3f(1,0,0);
glRotatef(hora,0,0,1);
glScalef(0.5, 0.5, 0.5);
linea();
glPopMatrix();
glFlush();
}
int main(int argc, char** argv){
glutInit(&argc,argv);
glutInitWindowSize(600,600);
glutCreateWindow("Practica4");
glClearColor(0.12,0.7,0.66,0);
gluOrtho2D(-1,1,-1,1);
leerImagen();
usarTexturas();
glutTimerFunc(1000,temporizador,1);
glutTimerFunc(60000,temporizador,2);
glutTimerFunc(360000,temporizador,3);
glEnable(GL_TEXTURE_2D);
glutKeyboardFunc(key);
glutDisplayFunc(display);
glutMainLoop();
return 0;
}
#include <stdlib.h>
#include <math.h>
#include <stdio.h>
#define PI 3.141592
int anchoV=2;
int altoV=2;
float incrx=0,incry=0,inc=0.1,dx,dy;
int ms00=2000;
int seg=0,min=15, hora=60;
int dirTec=3;
int ancho=128,alto=128;
unsigned char * datos;//es un apuntador hacia la variable datos
void leerImagen(){
FILE *imagen;
imagen=fopen("/home/artur/Escritorio/boy.raw","rb");
datos=(unsigned char*)malloc(ancho*alto*3);//malloc sirve para partar memoria se aparta ancho por alto por 3
if(imagen==NULL){
printf("Error: No imagen\n");
}else{printf("OK: Imagen cargada correctamente\n");}
fread(datos,ancho*alto*3,1,imagen);
fclose(imagen);
}
void usarTexturas(){
glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_MAG_FILTER, GL_LINEAR);
glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_MIN_FILTER, GL_LINEAR);
glTexImage2D(GL_TEXTURE_2D, 0, GL_RGB, ancho, alto, 0, GL_RGB, GL_UNSIGNED_BYTE, datos);
}
void key(unsigned char c, int x, int y)
{
if (c==27){
exit(0);
}
if (c=='a'|| c=='A'){
dirTec=4;
}
glutPostRedisplay();
}
void circulo(float cx,float cy,float radio,float r,float g,float b,float a1,float a2){
glBegin(GL_POLYGON);
glColor3f(1,1,1);
for (float i=a1; i<a2; i+=0.01)
{
glTexCoord2f(cos(i)/2+0.5,sin(i)/2+.5);glVertex2f(cos(i)/2+0.5,sin(i)/2+.5);
//dx=.5*cos(i)+cx;
//dy=.5*sin(i)+cy;
//glTexCoord2f(dx,dy);glVertex2f(dx, dy);
}
glEnd();
}
void cuadro(){ //FunciOn para dibujar el domino
glColor3f(1, 1, 1);
glBegin(GL_QUADS);
glTexCoord2f(0.0, 1.0);glVertex2f(-10,-10);
glTexCoord2f(1.0, 1.0);glVertex2f(10,-10);
glTexCoord2f(1.0, 0.0);glVertex2f(10,10);
glTexCoord2f(0.0, 0.0);glVertex2f(-10,10);
glEnd();
}
void linea(){
glLineWidth(3.0f);
glBegin(GL_LINES);
glVertex2f(0, 0);
glVertex2f(0, .4);
glEnd();
}
void temporizador(int value) {
switch (value) {
case 1 :
glutTimerFunc(1000,temporizador,1);
printf("Segundo\r");
seg=seg-6;
if(seg == -360){seg=0;}
break;
case 2 :
glutTimerFunc(60000,temporizador,2);
printf("Minuto\r");
min=min-6;
if(min == -360){min=0;}
break;
case 3 :
glutTimerFunc(360000,temporizador,2);
printf("Hora\r");
hora=hora-6;
if(hora == -360){hora=0;}
break;
}
glutPostRedisplay();
}
void display(void){
glClear(GL_COLOR_BUFFER_BIT);
glPushMatrix();
glRotatef(180,0,0,1);
glTranslatef(-0.5f,-0.5f,0);
circulo(0,0,1,1,0,0,0,2*3.1416);
glPopMatrix();
glPushMatrix();
glColor3f(0,0,1);
glRotatef(seg,0,0,1);
linea();
glPopMatrix();
glPushMatrix();
glColor3f(0,1,0);
glRotatef(min,0,0,1);
glScalef(.5, 0.8, 0.5);
linea();
glPopMatrix();
glPushMatrix();
glColor3f(1,0,0);
glRotatef(hora,0,0,1);
glScalef(0.5, 0.5, 0.5);
linea();
glPopMatrix();
glFlush();
}
int main(int argc, char** argv){
glutInit(&argc,argv);
glutInitWindowSize(600,600);
glutCreateWindow("Practica4");
glClearColor(0.12,0.7,0.66,0);
gluOrtho2D(-1,1,-1,1);
leerImagen();
usarTexturas();
glutTimerFunc(1000,temporizador,1);
glutTimerFunc(60000,temporizador,2);
glutTimerFunc(360000,temporizador,3);
glEnable(GL_TEXTURE_2D);
glutKeyboardFunc(key);
glutDisplayFunc(display);
glutMainLoop();
return 0;
}

Comentarios
Publicar un comentario