[C++ OPENGL] Dessiner un pauvre tube )=
Résolu
Ghkaeitq
Messages postés
12
Date d'inscription
Statut
Membre
Dernière intervention
-
Ghkaeitq Messages postés 12 Date d'inscription Statut Membre Dernière intervention -
Ghkaeitq Messages postés 12 Date d'inscription Statut Membre Dernière intervention -
Bonjour,
Je me lance dans la prog 3d et j'en chie un max. J'ai passé la journée à galérer et je ne comprend pas ou je bloque. Pas moyen d'afficher un pauvre tube. Pouvez vous me dire ce qui ne va pas ? Merci d'avance !
Le type point :
L'appel dans ma fonction "Dessiner()". Le quad de test s'affiche sans problème mais le tube me sort un vieux trait tout pourri :-(
Et enfin ma fonction Tube. J'ai recalculé et je suis sur des valeurs mathématiques. Je me demande si j'ai pas un problème avec mes tableaux de points :
Quelqu'un peut m'aider ? Je sature là... J'ai passé la journée dessus. Merci d'avance.
Je me lance dans la prog 3d et j'en chie un max. J'ai passé la journée à galérer et je ne comprend pas ou je bloque. Pas moyen d'afficher un pauvre tube. Pouvez vous me dire ce qui ne va pas ? Merci d'avance !
Le type point :
struct point { float x; float y; float z; }; void Dessiner(); void Tube(float x, float y, float z, float rb, float rh, float h, int n);
L'appel dans ma fonction "Dessiner()". Le quad de test s'affiche sans problème mais le tube me sort un vieux trait tout pourri :-(
glBegin(GL_LINE_STRIP); glColor3ub(255,0,0); //face rouge glVertex3d(1.0,1.0,1.0); glVertex3d(1,1,-1); glVertex3d(-1,1,-1); glVertex3d(-1,1,1); glEnd(); glBegin(GL_LINE_STRIP); Tube(0,0,0,2,2,2,10); //Cornet(0,0,0,2,1,10); glEnd();
Et enfin ma fonction Tube. J'ai recalculé et je suis sur des valeurs mathématiques. Je me demande si j'ai pas un problème avec mes tableaux de points :
void Tube(float x, float y, float z, float rb, float rh, float h, int n) { int i; point Pt[2*n]; for(i=0;i<=n;i++) { Pt[i].x=x+cos(i/360*n)*rb; Pt[i].y=y; Pt[i].z=z+sin(i/360*n)*rb; } for(i=n;i<=(2*n);i++) { Pt[i].x=x+cos(i/360*n)*rh; Pt[i].y=y+h; Pt[i].z=z+sin(i/360*n)*rh; } for(i=1;i<n;i++) { glColor3ub(0,0,255); glVertex3d(Pt[i].x,Pt[i].y,Pt[i].z); glVertex3d(Pt[i+1].x,Pt[i+1].y,Pt[i+1].z); glVertex3d(Pt[i+n+1].x,Pt[i+n+1].y,Pt[i+n+1].z); glVertex3d(Pt[i+n].x,Pt[i+n].y,Pt[i+n].z); } glVertex3d(Pt[n].x,Pt[n].y,Pt[n].z); glVertex3d(Pt[1].x,Pt[1].y,Pt[1].z); glVertex3d(Pt[n+1].x,Pt[n+1].y,Pt[n+1].z); glVertex3d(Pt[2*n].x,Pt[2*n].y,Pt[2*n].z); }
Quelqu'un peut m'aider ? Je sature là... J'ai passé la journée dessus. Merci d'avance.
A voir également:
- [C++ OPENGL] Dessiner un pauvre tube )=
- Dessiner un tableau - Guide
- Tube ripper - Télécharger - Conversion & Codecs
- Save tube - Télécharger - Téléchargement & Transfert
- Av tube - Télécharger - Téléchargement & Transfert
- Movie tube - Télécharger - TV & Vidéo
1 réponse
Bon ben si un jour quelqu'un a le même problème...
Opération mathématique sans cast les entiers : Pas bien ! Tous les points étaient bien traités mais arrondis à l'entier le plus proche (donc tous à la même valeur dans mon cas).
En plus les valeurs de trigo étaient pas si bonnes que ça, faut multiplier par 2 Pi et non diviser T_T
Enfin bref. Résolu. Merci quand même
Opération mathématique sans cast les entiers : Pas bien ! Tous les points étaient bien traités mais arrondis à l'entier le plus proche (donc tous à la même valeur dans mon cas).
En plus les valeurs de trigo étaient pas si bonnes que ça, faut multiplier par 2 Pi et non diviser T_T
Enfin bref. Résolu. Merci quand même