J'ai un problème a la con : j'arrive pas a dessiner une sphère en openGL !
j'ai un cours d'intro a synthèse d'image et je dois créer une série de figures et volumes en opengl : c'est a dire en utilisant seulement
glBegin(GL_..);
...
glvertex3f...;
...
glEnd();
j'ai fais très vite les autres volumes et figures mais pas moyen de faire cette putain de sphère !
je n'arrive pas a exprimer mes points [x,y,z] en fonctions de alpha,béta (angle en radians et r (rayon).
mes souvenir de math sont trop loins :(
j'arrive a x = sin(alpha) ; z = sin(beta) mais y = ???
j'ai loupé un truc mais je ne sais pas le quel
note prog.c était peut etre pas le bon forum :s
Forum Programmation.c une sphère en opengl ...
29
sept.
2004
# des maths
Posté par @ . Évalué à 5.
x = r * sin (theta) * cos (phi)
y = r * sin (theta) * cos (phi)
z = r * cos (theta)
et fais varier theta entre -90° et 90° et phi entre 0 et 360°
[^] # Re: des maths
Posté par Cyprien Le Pannérer (site web personnel) . Évalué à 1.
[^] # Re: des maths
Posté par Antoine Büsch . Évalué à 2.
[^] # Re: des maths
Posté par Antoine Büsch . Évalué à 1.
# la soluce avec des gl_quads
Posté par @ . Évalué à 3.
void Sphere(int a,int b) { float da = ( M_PI / a ); float db = ( 2.0f * M_PI / b ); glBegin(GL_QUADS); glColor3f(1.0,0.0,0.0); glNormal3f(0,0,1); for( int i = 0; i < a + 1 ; i++ ) { float r0 = sin ( i * da ); float y0 = cos ( i * da ); float r1 = sin ( (i+1) * da ); float y1 = cos ( (i+1) * da ); for( int j = 0; j < b + 1 ; j++ ) { float x0 = r0 * sin( j * db ); float z0 = r0 * cos( j * db ); float x1 = r0 * sin( (j+1) * db ); float z1 = r0 * cos( (j+1) * db ); float x2 = r1 * sin( j * db ); float z2 = r1 * cos( j * db ); float x3 = r1 * sin( (j+1) * db ); float z3 = r1 * cos( (j+1) * db ); glColor3f((x0+x1+x2+x3)/4.0,(y0+y1)/2.0,(z0+z1+z2+z3)/4.0); glVertex3f(x0,y0,z0); glVertex3f(x1,y0,z1); glVertex3f(x3,y1,z3); glVertex3f(x2,y1,z2); } } glEnd(); }Suivre le flux des commentaires
Note : les commentaires appartiennent à celles et ceux qui les ont postés. Nous n’en sommes pas responsables.