/* Affichage de la fonction de Rosenbrock à l'aide de polygones. Francois faure, UJF-Grenoble, 2003 */ #include #include #include #include #include "traqueboule.h" #include "argumentParser.h" // measure of computation time #include clock_t start, end; double cpu_time_used; int W_fen = 600; // largeur fenetre int H_fen = 600; // hauteur fenetre // methode d'affichage du treillis const int DISPLAY_TRIANGLES=0; const int DISPLAY_TRIANGLE_STRIP=1; const int DISPLAY_VERTEX_ARRAY=2; const int DISPLAY_LIST=3; int display_method = 0; // la méthode choisie GLuint listindex; // identificateur de la display list double vitesse_rotation=0.0; // rotation de la caméra // espace couvert par la fonction const float xmin = -1.0, xmax=1.0, ymin=-1.0, ymax = 1.0; // echantillonnage const int MAX_ECHAN=1001; int n_hori = MAX_ECHAN-1; // nombre de colonnes int n_vert = MAX_ECHAN-1; // nombre de lignes // fonction tabulée GLfloat ros[MAX_ECHAN * MAX_ECHAN * 3]; // tableau de coordonnées (dimension un) GLfloat couleurs[MAX_ECHAN*MAX_ECHAN*3]; // tableau de couleurs (dimension un) GLuint point_numero[2*(MAX_ECHAN-1)*MAX_ECHAN]; // ordre de parcours des sommets pour tracer des TRIANGLE_STRIP // conversion entre indices en dimension 3 et indice en dimension 1 inline unsigned int ind( int i, int j, int k ) { return 3*(n_vert*i+j)+k; } // calcul des points d'échantillonnage void tabuler_la_fonction() { float zMax = 0; int index=0; for( int i=0; izMax) zMax=z; // pour tout ramener ultérieurement dans l'intervalle [0,1] } // mapping sur [0;1] for( int i=0; i