commit a60dbd6e96b18de1b2733e0efe609ca9a8a253c8
parent 15efbe3f4d16b44bf64ca7fd3f0d318b9b1f8020
Author: Yoann <yoann.b87@voila.fr>
Date: Tue, 27 Sep 2011 21:15:03 +0200
Liaison entre les deux fichier roam.c et display.c pour permettre un
affichage de la sortie de l'algorithme. (Le main se trouve dans
display.c).
Diffstat:
| M | display.c | | | 91 | +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++---------------- |
| M | roam.c | | | 11 | +++++------ |
2 files changed, 78 insertions(+), 24 deletions(-)
diff --git a/display.c b/display.c
@@ -1,21 +1,32 @@
#include <SDL/SDL.h>
#include <GL/glew.h>
#include <GL/glu.h>
+#include "roam.c"
+int initWindow();
+int mainLoop();
void renderScene();
+void displayTree(Triangle *t);
+void Draw_Axes ();
-int main(int argc, char *argv[]) {
- short continuer;
- SDL_Event event;
+Triangle *t;
- argc = argc; /* Unused */
- argv = argv; /* Unused */
+int initWindow() {
SDL_Init(SDL_INIT_VIDEO);
- SDL_WM_SetCaption("Mon premier programme OpenGL !",NULL);
+ SDL_WM_SetCaption("Sortie terrain OpenGL",NULL);
SDL_SetVideoMode(640, 480, 32, SDL_OPENGL);
+ glMatrixMode( GL_PROJECTION );
+ glLoadIdentity();
+ gluPerspective(70,(double)640/480,1,10000);
+ glEnable(GL_DEPTH_TEST);
+
+ return 0;
+}
+
+int mainLoop() {
+ short continuer = 1;
+ SDL_Event event;
- continuer = 1;
-
while (continuer) {
SDL_WaitEvent(&event);
@@ -32,20 +43,64 @@ int main(int argc, char *argv[]) {
return 0;
}
+void drawAxes() {
+ glDisable(GL_TEXTURE_2D);
+ glBegin(GL_LINES);
+ glColor3ub(255,0,0);
+ glVertex3f(0.0f, 0.0f, 0.0f); // origin of the line
+ glVertex3f(2500.0f, 0.0f, 0.0f); // ending point of the line
+ glEnd( );
+
+ glBegin(GL_LINES);
+ glColor3ub(0,255,0);
+ glVertex3f(0.0f, 0.0f, 0.0f); // origin of the line
+ glVertex3f(0.0f, 2500.0f, 0.0f); // ending point of the line
+ glEnd( );
+
+ glBegin(GL_LINES);
+ glColor3ub(0,0,255);
+ glVertex3f(0.0f, 0.0f, 0.0f); // origin of the line
+ glVertex3f(0.0f, 0.0f, -2500.0f); // ending point of the line
+ glEnd( );
+}
+
void renderScene() {
- glMatrixMode(GL_PROJECTION);
- glLoadIdentity();
glMatrixMode(GL_MODELVIEW);
glLoadIdentity();
-
- glClear(GL_COLOR_BUFFER_BIT);
-
- glBegin(GL_TRIANGLES);
- glColor3ub(255,0,0); glVertex3d(-0.75,-0.75,0);
- glColor3ub(0,255,0); glVertex3d(0,0.75,0);
- glColor3ub(0,0,255); glVertex3d(0.75,-0.75,0);
- glEnd();
+ gluLookAt(500,500,800,500,500,0,0,1,0);
+ glClear(GL_COLOR_BUFFER_BIT | GL_DEPTH_BUFFER_BIT) ;
+ drawAxes();
+ displayTree(t);
+
glFlush();
SDL_GL_SwapBuffers();
}
+
+void displayTree(Triangle *t) {
+ if(t->tLeftChild == NULL) {
+ glBegin(GL_LINE_LOOP);
+ glColor3ub(255,255,255);
+ glVertex3d(t->vLeft->x,t->vLeft->y,20);
+ glVertex3d(t->vApex->x,t->vApex->y,1);
+ glVertex3d(t->vRight->x,t->vRight->y,0);
+ glEnd();
+ }
+ else {
+ displayTree(t->tLeftChild);
+ displayTree(t->tRightChild);
+ }
+}
+
+int main() {
+ initWindow();
+ t = initDefaultExample();
+
+ triangle_split(t);
+ triangle_split(t->tLeftChild);
+ triangle_split(t->tLeftChild->tLeftChild);
+ triangle_split(t->tLeftChild->tRightChild);
+
+ mainLoop();
+ return 0;
+}
diff --git a/roam.c b/roam.c
@@ -220,7 +220,7 @@ Triangle* maxheap_pop_max(Triangle** heap, unsigned int n) {
return ret;
}
-int main() {
+Triangle* initDefaultExample() {
Triangle* t = (Triangle*)malloc(sizeof(Triangle));
Vertex* vApex = (Vertex*)malloc(sizeof(Vertex));
Vertex* vLeft = (Vertex*)malloc(sizeof(Vertex));
@@ -239,11 +239,10 @@ int main() {
t->tLeftNeighbor = NULL;
t->tRightNeighbor = NULL;
t->tParent = NULL;
-
- triangle_split(t);
- triangle_split(t->tLeftChild);
- triangle_split(t->tLeftChild->tLeftChild);
- triangle_split(t->tLeftChild->tRightChild);
+ return t;
+}
+
+int main2() {
return 0;
}