Dessiner un cylindre entre 2 points 3D [Résolu]

Messages postés
4
Date d'inscription
vendredi 19 mai 2006
Statut
Membre
Dernière intervention
10 avril 2007
- - Dernière réponse : ScSami
Messages postés
1490
Date d'inscription
mercredi 5 février 2003
Statut
Membre
Dernière intervention
3 décembre 2007
- 15 déc. 2006 à 17:07
Bonjour, 

   je cherche, à dessiner un simple cylindre entre 2 points définis par leurs coordonnées A(xa,ya,za) et B(xb,yb,zb). j'ai vu qu'il existait une fonction glucylinder avec la bibliotheque GLUT mais n'esxite t'il pas une autre fonction plus simple où l'on rentre le point de depart, le point d'arrivée et le diametre. Sinon, comment utiliser glucylinder, existe t'il d'autres méthodes. 

Merci d'avance 

TECAE
Afficher la suite 

Votre réponse

5 réponses

Meilleure réponse
Messages postés
1490
Date d'inscription
mercredi 5 février 2003
Statut
Membre
Dernière intervention
3 décembre 2007
15
3
Merci
Wai enfin, si tu décides de coder toi-même la création d'un volum de ce type, le mieux est de faire ainsi :
- Définir l'axe de hauteur (X,Y ou Z)  [facultatif]
- Définir son Rayon, sa Hauteur et ses résolutions (nombre de cotés du cercle et nombre de segments de la hauteur)
- Calculer les points puis définir ses faces
- Le placer dans son environnement via Translation(X,Y,Z) et Rotation(X,Y,Z)

Pour définir ses points, rien de plus simple : utiliser une des équations pour dessiner un cercle !
X = CentreX + Rayon * Cos(AngleEnRadian)


Y = CentreX + Rayon * Sin(AngleEnRadian)



Là, évidemment, ce sera hyper lent... faut optimiser via, par exemple, une table des sinus et cosinus... enfin, au besoin (de vitesse ou non).
Pi pour bien optimiser le truc, tu le traces simplement en 2D dans un tableau linéaire (du nombre de points des cotés du cercle) puis tu copie le tout en modifiant le Z (ou X ou Y selon) et en gardant les deux autres intacte et ce, le nombre de segments en hauteur que tu veux !!!
Enfin, c'est pas sorcier quoi ! (mais 'chais pas si 'chuis très clair là !!!)

Enjoy


<hr size="2" width="100%" />




( Si une réponse vous convient, cliquez sur le bouton "Réponse acceptée". )

Dire « Merci » 3

Quelques mots de remerciements seront grandement appréciés. Ajouter un commentaire

Codes Sources 153 internautes nous ont dit merci ce mois-ci

Commenter la réponse de ScSami
Messages postés
1490
Date d'inscription
mercredi 5 février 2003
Statut
Membre
Dernière intervention
3 décembre 2007
15
0
Merci
Ben apparemment non ! Tu rendrais d'ailleurs sans doute un grand service à la communauté si tu nous programmais une petite fonction simplifiant celle du OpenGL !

Enjoy


<hr size="2" width="100%" />




( Si une réponse vous convient, cliquez sur le bouton "Réponse acceptée". )
Commenter la réponse de ScSami
Messages postés
7668
Date d'inscription
samedi 5 novembre 2005
Statut
Membre
Dernière intervention
22 août 2014
18
0
Merci
Surtout qu'il manque dans la définition de son dessin un point important : le dessin sera bien évidemment différent selon la position de l'observateur du cylindre !


Vu de dessus et à la perpendiculaire de son centre, par exemple, ce sera un simple cercle... et, dans une autre position, un simple rectangle !

Bon...
Commenter la réponse de jmfmarques
Messages postés
4
Date d'inscription
vendredi 19 mai 2006
Statut
Membre
Dernière intervention
10 avril 2007
0
Merci
en fait je cherche à le dessiner en 3D, donc le point de vu n'a pas d'importance, puisque ensuite je peux me deplacer autour.........................

TECAE
Commenter la réponse de TECAE
Messages postés
7668
Date d'inscription
samedi 5 novembre 2005
Statut
Membre
Dernière intervention
22 août 2014
18
0
Merci
Ah !!!
Tu veux donc, si j'ai bien compris, faire ta propre application 3 D et veut "dessiner un cylindre"...
Il va bien falloir, selon ton algorithme :
-soit que tu dessines au moins 2 vues (pour un cylindre)
-soit que tu définisses l'essentiel, à savoir un diamètre et une hauteur

---que ton algorithme de dessin à partir de ces données considère l'angle d'observation (c'est celà "tourner") et utilise la trigonométrie appliquée à ces données.
Commenter la réponse de jmfmarques