-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy pathetapa2.c
135 lines (111 loc) · 4.15 KB
/
etapa2.c
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
/* _\|/_
(o o)
+----oOO-{_}-OOo--------------------------------------------------------------+
| |
| P L I M U S C I R C U S |
| |
| Alumnos : Isaac Jurado Peinado [C2H5OH] |
| Esteban Martínez Tristancho [Tito Houzy] |
| Asignatura: Informática Gráfica I |
| Profesor : Jose María Buades Rubio |
| Curso : 2003/2004 |
| Estudios : Ingeniería Técnica en Informática de Gestión (TIG2) |
| Facultad : Universitat de les Illes Balears (UIB) |
| |
+----------------------------------------------------------------------------*/
/*
* etapa2.c
*/
#include "gl_headers.h"
/* Tamaño incial de la ventana */
const int W_WIDTH = 500;
const int W_HEIGHT = 500;
/* Variable que indica el ángulo de rotación de los ejes. */
GLfloat fAngulo;
void Display (void)
{
/* Borramos la escena */
glClear(GL_COLOR_BUFFER_BIT);
glPushMatrix();
/* Rotamos las proximas primitivas */
glRotatef(fAngulo, 0.0f, 0.0f, 1.0f);
/* Creamos a continuación dibujamos los tres poligonos */
glBegin(GL_POLYGON);
glColor3f (1.0f, 1.0f, 1.0f);
glVertex3f(0.0f, 0.0f, 0.0f);
glColor3f (0.0f, 1.0f, 0.0f);
glVertex3f(1.0f, 0.0f, 0.0f);
glColor3f (0.0f, 1.0f, 0.0f);
glVertex3f(-0.5f, 0.866f, 0.0f);
glEnd();
glBegin(GL_POLYGON);
glColor3f (1.0f, 1.0f, 1.0f);
glVertex3f(0.0f, 0.0f, 0.0f);
glColor3f (1.0f, 0.0f, 0.0f);
glVertex3f(1.0f, 0.0f, 0.0f);
glColor3f (0.0f, 0.0f, 1.0f);
glVertex3f(-0.5f, -0.866f, 0.0f);
glEnd();
glBegin(GL_POLYGON);
glColor3f (1.0f, 1.0f, 1.0f);
glVertex3f(0.0f, 0.0f, 0.0f);
glColor3f (0.0f, 1.0f, 1.0f);
glVertex3f(-0.5f, 0.866f, 0.0f);
glColor3f (0.0f, 0.0f, 1.0f);
glVertex3f(-0.5f, -0.866f, 0.0f);
glEnd();
glBegin(GL_POLYGON);
glColor3f(0.0f, 0.0f, 0.0f);
glVertex3f(-0.3f, 0.3f, 0.0f);
glVertex3f(0.3f, 0.3f, 0.0f);
glVertex3f(0.3f, -0.3f, 0.0f);
glVertex3f(-0.3f, -0.3f, 0.0f);
glEnd();
glPopMatrix();
glFlush();
glutSwapBuffers();
}
void Idle (void)
{
/* Incrementamos el ángulo */
fAngulo += 0.3f;
/* Si es mayor que dos pi la decrementamos */
if (fAngulo > 360)
fAngulo -= 360;
/* Indicamos que es necesario repintar la pantalla */
glutPostRedisplay();
}
void Reshape (int ancho, int alto)
{
int lado, x, y;
if (ancho < alto) {
lado = ancho;
x = 0;
y = (alto - ancho) / 2;
} else {
lado = alto;
x = (ancho - alto) / 2;
y = 0;
}
glViewport(x, y, lado, lado);
}
int main (int argc, char **argv)
{
/* Inicializamos la librería GLUT */
glutInit(&argc, argv);
/* Indicamos como ha de ser la nueva ventana */
glutInitWindowPosition(100,100);
glutInitWindowSize(W_WIDTH, W_HEIGHT);
glutInitDisplayMode(GLUT_RGBA | GLUT_DOUBLE);
/* Creamos la nueva ventana */
glutCreateWindow("Ventana principal");
/* Indicamos cuales son las funciones de redibujado e idle */
glutDisplayFunc(Display);
glutIdleFunc(Idle);
glutReshapeFunc(Reshape);
/* El color de fondo será el blanco (RGBA, RGB + Alpha channel) */
glClearColor(1.0f, 1.0f, 1.0f, 1.0f);
/* Comienza la ejecución del core de GLUT */
glutMainLoop();
return 0;
}