/* Affichage de la fonction de Rosenbrock à l'aide de polygones. Francois faure, UJF-Grenoble, 2003 */ #include #include #include #include #include "traqueboule.h" const int W_fen = 600; // largeur fenetre const int H_fen = 600; // hauteur fenetre // fonction de Rosenbrock tabulée const int w_img = 10; // largeur tableau ros const int h_img = 10; // hauteur tableau ros GLfloat ros[h_img*w_img*3]; // points (x,y,z) GLfloat norm[h_img*w_img*3]; // normales (x,y,z) GLuint indices[2*(w_img-1)*h_img]; // indices pour des TRIANGLE_STRIP // espace couvert par la fonction const float xmin = -1.0, xmax=1.0, ymin=-1.0, ymax = 1.0; float zMax = 0; // matériau GLfloat m_emission[] = {0, 0, 0}; GLfloat m_ambient[] = {1,1,1}; GLfloat m_diffuse[] = {0.5,0.5,0.5}; GLfloat m_specular[] = {0.5,0.5,0.5}; GLfloat m_shininess = 20.0; // caractéristiques globales de l'éclairage GLfloat l_ambient[] = {0.1,0.1,0.1}; GLint l_localViewer = GL_TRUE; GLint l_twoSides = GL_TRUE; GLint l_separateDiffuseAndSpecular = GL_SINGLE_COLOR; // lumière 0 bool lumiere0 = true; GLfloat l0_position[] = {0,0,0,1}; GLfloat l0_ambient[] = {0.1,0.1,0.1}; GLfloat l0_diffuse[] = {1,0,0}; GLfloat l0_specular[] = {1,0,0}; // lumière 1 bool lumiere1 = false; GLfloat l1_position[] = {0,0,0,1}; GLfloat l1_ambient[] = {0.1,0.1,0.1}; GLfloat l1_diffuse[] = {1,0,0}; GLfloat l1_specular[] = {0,1,0}; GLfloat lattitude1 = 90; GLfloat longitude1 = 0; GLfloat distance1 = 2; // calcul des points d'échantillonnage void calculer_rosenbrock() { int index=0; for( int i=0; izMax) zMax=z; //printf("%f %f %f\n",x,y,z); } // enumeration des indices pour un parcours TRIANGLE_STRIP index=0; for(int i=1; i