00001
00002
00003
00004
00005
00006
00007
00008
00009
00010
00011
00012
00013
00014
00015
00016
00017
00018
00019
00020
00021
00022 #include "toolkits/geom/geometria.h"
00023 #include "matriz4.h"
00024
00025 #include <stdio.h>
00026
00027
00028
00029
00030
00031 GEOMETRIA *
00032 GEOMETRIA::crear_copia(void)
00038 {
00039 return NULL;
00040 }
00041
00042 void
00043 GEOMETRIA::minmax(VECTOR *min, VECTOR *max)
00044 {
00045 min->x = -1;
00046 min->y = -1;
00047 min->z = -1;
00048 max->x = 1;
00049 max->y = 1;
00050 max->z = 1;
00051 }
00052 #ifdef GL_ENABLED
00053
00054 void
00055 pintar_cubo(double lado)
00056 {
00057 glDisable(GL_LIGHTING);
00058 glBegin(GL_LINE_LOOP);
00059 glVertex3d(-lado/2, -lado/2, -lado/2);
00060 glVertex3d(lado/2, -lado/2, -lado/2);
00061 glVertex3d(lado/2, lado/2, -lado/2);
00062 glVertex3d(-lado/2, lado/2, -lado/2);
00063 glEnd();
00064 glBegin(GL_LINE_LOOP);
00065 glVertex3d(-lado/2, -lado/2, lado/2);
00066 glVertex3d(lado/2, -lado/2, lado/2);
00067 glVertex3d(lado/2, lado/2, lado/2);
00068 glVertex3d(-lado/2, lado/2, lado/2);
00069 glEnd();
00070 glBegin(GL_LINES);
00071 glVertex3d(-lado/2, -lado/2, -lado/2);
00072 glVertex3d(-lado/2, -lado/2, lado/2);
00073 glVertex3d(lado/2, -lado/2, -lado/2);
00074 glVertex3d(lado/2, -lado/2, lado/2);
00075 glVertex3d(lado/2, lado/2, -lado/2);
00076 glVertex3d(lado/2, lado/2, lado/2);
00077 glVertex3d(-lado/2, lado/2, -lado/2);
00078 glVertex3d(-lado/2, lado/2, lado/2);
00079 glEnd();
00080 }
00081
00082 void
00083 pintar_cubo_solido(double l)
00084 {
00085 int i;
00086
00087 for ( i = 0; i < 6; i++ ) {
00088 glBegin(GL_POLYGON);
00089 glNormal3dv(NORMALES_cubo[i]);
00090 glTexCoord2dv(TEXTURAS_cubo[i][0]);
00091 glVertex3d(l * COORDENADAS_cubo[i][0][0],
00092 l * COORDENADAS_cubo[i][0][1],
00093 l * COORDENADAS_cubo[i][0][2]);
00094 glNormal3dv(NORMALES_cubo[i]);
00095 glTexCoord2dv(TEXTURAS_cubo[i][1]);
00096 glVertex3d(l * COORDENADAS_cubo[i][1][0],
00097 l * COORDENADAS_cubo[i][1][1],
00098 l * COORDENADAS_cubo[i][1][2]);
00099 glNormal3dv(NORMALES_cubo[i]);
00100 glTexCoord2dv(TEXTURAS_cubo[i][2]);
00101 glVertex3d(l * COORDENADAS_cubo[i][2][0],
00102 l * COORDENADAS_cubo[i][2][1],
00103 l * COORDENADAS_cubo[i][2][2]);
00104 glNormal3dv(NORMALES_cubo[i]);
00105 glTexCoord2dv(TEXTURAS_cubo[i][3]);
00106 glVertex3d(l * COORDENADAS_cubo[i][3][0],
00107 l * COORDENADAS_cubo[i][3][1],
00108 l * COORDENADAS_cubo[i][3][2]);
00109 glEnd();
00110 }
00111 }
00112
00113 void
00114 pintar_paralelepipedo(VECTOR p1, VECTOR p2)
00115 {
00116 glDisable(GL_LIGHTING);
00117 glBegin(GL_LINE_LOOP);
00118 glVertex3d(p1.x, p1.y, p1.z); glVertex3d(p2.x, p1.y, p1.z);
00119 glVertex3d(p2.x, p2.y, p1.z); glVertex3d(p1.x, p2.y, p1.z);
00120 glEnd();
00121 glBegin(GL_LINE_LOOP);
00122 glVertex3d(p1.x, p1.y, p2.z); glVertex3d(p2.x, p1.y, p2.z);
00123 glVertex3d(p2.x, p2.y, p2.z); glVertex3d(p1.x, p2.y, p2.z);
00124 glEnd();
00125 glBegin(GL_LINES);
00126 glVertex3d(p1.x, p1.y, p1.z); glVertex3d(p1.x, p1.y, p2.z);
00127 glVertex3d(p2.x, p1.y, p1.z); glVertex3d(p2.x, p1.y, p2.z);
00128 glVertex3d(p2.x, p2.y, p1.z); glVertex3d(p2.x, p2.y, p2.z);
00129 glVertex3d(p1.x, p2.y, p1.z); glVertex3d(p1.x, p2.y, p2.z);
00130 glEnd();
00131 }
00132
00133 #endif
00134
00135
00136
00137
00138