Forum |  HardWare.fr | News | Articles | PC | S'identifier | S'inscrire | Shop Recherche
4957 connectés 

  FORUM HardWare.fr
  Programmation
  Divers

  les coordonnées de l'UTAH Teapot

 


 Mot :   Pseudo :  
 
Bas de page
Auteur Sujet :

les coordonnées de l'UTAH Teapot

n°1058993
taoa
Posté le 24-04-2005 à 20:44:21  profilanswer
 

Salut à tous, je voudrais tester mon programme qui calcule et affiche les Bézier Patches, et pour ça j'aimerais obtenir les coordonnées des points de contrôles qui définissent les patches construisant la fameuse théière, celle utilisée par plein de monde, notamment dans la bibliothèque GLUT.
 
Si quelqu'un les as sous le coude, merci de me les donner ^^
 
A +

mood
Publicité
Posté le 24-04-2005 à 20:44:21  profilanswer
 

n°1059003
elianor
bannie 17 fois
Posté le 24-04-2005 à 20:48:33  profilanswer
 

Code :
  1. static void
  2. teapot(GLint grid, GLdouble scale, GLenum type)
  3. {
  4.   float p[4][4][3], q[4][4][3], r[4][4][3], s[4][4][3];
  5.   long i, j, k, l;
  6.   glPushAttrib(GL_ENABLE_BIT | GL_EVAL_BIT);
  7.   glEnable(GL_AUTO_NORMAL);
  8.   glEnable(GL_NORMALIZE);
  9.   glEnable(GL_MAP2_VERTEX_3);
  10.   glEnable(GL_MAP2_TEXTURE_COORD_2);
  11.   glPushMatrix();
  12.   glRotatef(270.0, 1.0, 0.0, 0.0);
  13.   glScalef(0.5 * scale, 0.5 * scale, 0.5 * scale);
  14.   glTranslatef(0.0, 0.0, -1.5);
  15.   for (i = 0; i < 10; i++) {
  16.     for (j = 0; j < 4; j++) {
  17.       for (k = 0; k < 4; k++) {
  18.         for (l = 0; l < 3; l++) {
  19.           p[j][k][l] = cpdata[patchdata[i][j * 4 + k]][l];
  20.           q[j][k][l] = cpdata[patchdata[i][j * 4 + (3 - k)]][l];
  21.           if (l == 1)
  22.             q[j][k][l] *= -1.0;
  23.           if (i < 6) {
  24.             r[j][k][l] =
  25.               cpdata[patchdata[i][j * 4 + (3 - k)]][l];
  26.             if (l == 0)
  27.               r[j][k][l] *= -1.0;
  28.             s[j][k][l] = cpdata[patchdata[i][j * 4 + k]][l];
  29.             if (l == 0)
  30.               s[j][k][l] *= -1.0;
  31.             if (l == 1)
  32.               s[j][k][l] *= -1.0;
  33.           }
  34.         }
  35.       }
  36.     }
  37.     glMap2f(GL_MAP2_TEXTURE_COORD_2, 0, 1, 2, 2, 0, 1, 4, 2,
  38.       &tex[0][0][0]);
  39.     glMap2f(GL_MAP2_VERTEX_3, 0, 1, 3, 4, 0, 1, 12, 4,
  40.       &p[0][0][0]);
  41.     glMapGrid2f(grid, 0.0, 1.0, grid, 0.0, 1.0);
  42.     glEvalMesh2(type, 0, grid, 0, grid);
  43.     glMap2f(GL_MAP2_VERTEX_3, 0, 1, 3, 4, 0, 1, 12, 4,
  44.       &q[0][0][0]);
  45.     glEvalMesh2(type, 0, grid, 0, grid);
  46.     if (i < 6) {
  47.       glMap2f(GL_MAP2_VERTEX_3, 0, 1, 3, 4, 0, 1, 12, 4,
  48.         &r[0][0][0]);
  49.       glEvalMesh2(type, 0, grid, 0, grid);
  50.       glMap2f(GL_MAP2_VERTEX_3, 0, 1, 3, 4, 0, 1, 12, 4,
  51.         &s[0][0][0]);
  52.       glEvalMesh2(type, 0, grid, 0, grid);
  53.     }
  54.   }
  55.   glPopMatrix();
  56.   glPopAttrib();
  57. }


---------------
JE JE SUIS LIBERTINEEEEEEEEEEE JE SUIS UNE CATINNNNNNNNN §§§§§§§§
n°1059007
elianor
bannie 17 fois
Posté le 24-04-2005 à 20:50:31  profilanswer
 

J'en ai oublié un bout [:petrus75]
 

Code :
  1. static int patchdata[][16] =
  2. {
  3.     /* rim */
  4.   {102, 103, 104, 105, 4, 5, 6, 7, 8, 9, 10, 11,
  5.     12, 13, 14, 15},
  6.     /* body */
  7.   {12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23,
  8.     24, 25, 26, 27},
  9.   {24, 25, 26, 27, 29, 30, 31, 32, 33, 34, 35, 36,
  10.     37, 38, 39, 40},
  11.     /* lid */
  12.   {96, 96, 96, 96, 97, 98, 99, 100, 101, 101, 101,
  13.     101, 0, 1, 2, 3,},
  14.   {0, 1, 2, 3, 106, 107, 108, 109, 110, 111, 112,
  15.     113, 114, 115, 116, 117},
  16.     /* bottom */
  17.   {118, 118, 118, 118, 124, 122, 119, 121, 123, 126,
  18.     125, 120, 40, 39, 38, 37},
  19.     /* handle */
  20.   {41, 42, 43, 44, 45, 46, 47, 48, 49, 50, 51, 52,
  21.     53, 54, 55, 56},
  22.   {53, 54, 55, 56, 57, 58, 59, 60, 61, 62, 63, 64,
  23.     28, 65, 66, 67},
  24.     /* spout */
  25.   {68, 69, 70, 71, 72, 73, 74, 75, 76, 77, 78, 79,
  26.     80, 81, 82, 83},
  27.   {80, 81, 82, 83, 84, 85, 86, 87, 88, 89, 90, 91,
  28.     92, 93, 94, 95}
  29. };
  30. /* *INDENT-OFF* */
  31. static float cpdata[][3] =
  32. {
  33.     {0.2, 0, 2.7}, {0.2, -0.112, 2.7}, {0.112, -0.2, 2.7}, {0,
  34.     -0.2, 2.7}, {1.3375, 0, 2.53125}, {1.3375, -0.749, 2.53125},
  35.     {0.749, -1.3375, 2.53125}, {0, -1.3375, 2.53125}, {1.4375,
  36.     0, 2.53125}, {1.4375, -0.805, 2.53125}, {0.805, -1.4375,
  37.     2.53125}, {0, -1.4375, 2.53125}, {1.5, 0, 2.4}, {1.5, -0.84,
  38.     2.4}, {0.84, -1.5, 2.4}, {0, -1.5, 2.4}, {1.75, 0, 1.875},
  39.     {1.75, -0.98, 1.875}, {0.98, -1.75, 1.875}, {0, -1.75,
  40.     1.875}, {2, 0, 1.35}, {2, -1.12, 1.35}, {1.12, -2, 1.35},
  41.     {0, -2, 1.35}, {2, 0, 0.9}, {2, -1.12, 0.9}, {1.12, -2,
  42.     0.9}, {0, -2, 0.9}, {-2, 0, 0.9}, {2, 0, 0.45}, {2, -1.12,
  43.     0.45}, {1.12, -2, 0.45}, {0, -2, 0.45}, {1.5, 0, 0.225},
  44.     {1.5, -0.84, 0.225}, {0.84, -1.5, 0.225}, {0, -1.5, 0.225},
  45.     {1.5, 0, 0.15}, {1.5, -0.84, 0.15}, {0.84, -1.5, 0.15}, {0,
  46.     -1.5, 0.15}, {-1.6, 0, 2.025}, {-1.6, -0.3, 2.025}, {-1.5,
  47.     -0.3, 2.25}, {-1.5, 0, 2.25}, {-2.3, 0, 2.025}, {-2.3, -0.3,
  48.     2.025}, {-2.5, -0.3, 2.25}, {-2.5, 0, 2.25}, {-2.7, 0,
  49.     2.025}, {-2.7, -0.3, 2.025}, {-3, -0.3, 2.25}, {-3, 0,
  50.     2.25}, {-2.7, 0, 1.8}, {-2.7, -0.3, 1.8}, {-3, -0.3, 1.8},
  51.     {-3, 0, 1.8}, {-2.7, 0, 1.575}, {-2.7, -0.3, 1.575}, {-3,
  52.     -0.3, 1.35}, {-3, 0, 1.35}, {-2.5, 0, 1.125}, {-2.5, -0.3,
  53.     1.125}, {-2.65, -0.3, 0.9375}, {-2.65, 0, 0.9375}, {-2,
  54.     -0.3, 0.9}, {-1.9, -0.3, 0.6}, {-1.9, 0, 0.6}, {1.7, 0,
  55.     1.425}, {1.7, -0.66, 1.425}, {1.7, -0.66, 0.6}, {1.7, 0,
  56.     0.6}, {2.6, 0, 1.425}, {2.6, -0.66, 1.425}, {3.1, -0.66,
  57.     0.825}, {3.1, 0, 0.825}, {2.3, 0, 2.1}, {2.3, -0.25, 2.1},
  58.     {2.4, -0.25, 2.025}, {2.4, 0, 2.025}, {2.7, 0, 2.4}, {2.7,
  59.     -0.25, 2.4}, {3.3, -0.25, 2.4}, {3.3, 0, 2.4}, {2.8, 0,
  60.     2.475}, {2.8, -0.25, 2.475}, {3.525, -0.25, 2.49375},
  61.     {3.525, 0, 2.49375}, {2.9, 0, 2.475}, {2.9, -0.15, 2.475},
  62.     {3.45, -0.15, 2.5125}, {3.45, 0, 2.5125}, {2.8, 0, 2.4},
  63.     {2.8, -0.15, 2.4}, {3.2, -0.15, 2.4}, {3.2, 0, 2.4}, {0, 0,
  64.     3.15}, {0.8, 0, 3.15}, {0.8, -0.45, 3.15}, {0.45, -0.8,
  65.     3.15}, {0, -0.8, 3.15}, {0, 0, 2.85}, {1.4, 0, 2.4}, {1.4,
  66.     -0.784, 2.4}, {0.784, -1.4, 2.4}, {0, -1.4, 2.4}, {0.4, 0,
  67.     2.55}, {0.4, -0.224, 2.55}, {0.224, -0.4, 2.55}, {0, -0.4,
  68.     2.55}, {1.3, 0, 2.55}, {1.3, -0.728, 2.55}, {0.728, -1.3,
  69.     2.55}, {0, -1.3, 2.55}, {1.3, 0, 2.4}, {1.3, -0.728, 2.4},
  70.     {0.728, -1.3, 2.4}, {0, -1.3, 2.4}, {0, 0, 0}, {1.425,
  71.     -0.798, 0}, {1.5, 0, 0.075}, {1.425, 0, 0}, {0.798, -1.425,
  72.     0}, {0, -1.5, 0.075}, {0, -1.425, 0}, {1.5, -0.84, 0.075},
  73.     {0.84, -1.5, 0.075}
  74. };
  75. static float tex[2][2][2] =
  76. {
  77.   { {0, 0},
  78.     {1, 0}},
  79.   { {0, 1},
  80.     {1, 1}}
  81. };


---------------
JE JE SUIS LIBERTINEEEEEEEEEEE JE SUIS UNE CATINNNNNNNNN §§§§§§§§
n°1059062
taoa
Posté le 24-04-2005 à 21:39:52  profilanswer
 

merci!
Le code au début c pour calculer les points c ca? :p
 
Je vais juste prendre les patches :D


Aller à :
Ajouter une réponse
  FORUM HardWare.fr
  Programmation
  Divers

  les coordonnées de l'UTAH Teapot

 

Sujets relatifs
OpenGL: obtenir les coordonnées réellescomment renvoyer les coordonnées de la cellule selectionnée?
Affichage des coordonnées de la sourisCoordonnées souris OpenGL
Coordonnées d'un contrôleAction script] coordonnées de ma scène ...??
Récuperer les coordonnées d'un click sur une image,Mapping des coordonnées de la souris
Coordonnées d'un clicRécupérer coordonnées souris et les utiliser...
Plus de sujets relatifs à : les coordonnées de l'UTAH Teapot


Copyright © 1997-2025 Groupe LDLC (Signaler un contenu illicite / Données personnelles)