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

  FORUM HardWare.fr
  Programmation
  C++

  Orientation dans l'espace

 


 Mot :   Pseudo :  
 
Bas de page
Auteur Sujet :

Orientation dans l'espace

n°1687305
red factio​n
Posté le 16-02-2008 à 16:32:28  profilanswer
 

Bonjour,
 
En opengl j'ai un vecteur formé par les points (x0,y0,z0),(x1,y1,z1) j'aimerai orienter un objet par rapport a ce vecteur ...
 
j'ai essayé ca :  
 

Code :
  1. dx=x1-x0;
  2. dy=y1-y0;
  3. dz=z1-z0;
  4. roll = (atan2(y,x)/2*PI*360);
  5. pitch = (atan2(z,y)/2*PI*360);
  6. yaw = (atan2(z,x)/2*PI*360);
  7. glRotatef(roll,0,0,1);
  8. glRotatef(pitch,1,0,0);
  9. glRotatef(yaw,0,1,0);


 
 
mais ca ne fonctionne pas. deplus si je change lordre dans lequel les glrotate sont faits ca ne donne pas le meme resultat.
ca ne fonctionne que dans un plan mais pas les trois a la fois.


Message édité par red faction le 16-02-2008 à 16:35:52
mood
Publicité
Posté le 16-02-2008 à 16:32:28  profilanswer
 

n°1687360
bjone
Insert booze to continue
Posté le 16-02-2008 à 19:28:25  profilanswer
 

a le positionnement dans l'espace :D
 
déjà un vecteur seul est insuffisant, pour déterminer l'orientation exacte, il te faut un autre vecteur (perpendiculaire au premier).
 
pour moi là avec juste un vecteur, seul le yaw et le pitch sont déterminables.
 
donc je te conseilles de déterminer le yaw puis le pitch. (orientation dans un plan horizontal, puis élévation par rapport à ce plan)
 
tu auras droit a un verrouillage de cadran si tu cherches a faire un looping :D (le bon vieux gimbal lock)
 
enfin ce genre de trucs est très rapidement chiant, je te conseille d'aller voir du coté des quaternions ça peut simplifier la vie, et de faire toute ta sauce en interne et de pas te reposer sur les glbidules.


Message édité par bjone le 16-02-2008 à 19:28:34
n°1687364
red factio​n
Posté le 16-02-2008 à 20:11:58  profilanswer
 

ah bjone !! (le seul qui arrive a comprendre qqch a tout mes charrabiat sur hfr)
 
en fait ce que je cherche a faire c'est dessiné un ensemble de formes continues le long dune courbe 3d
 
ex :e trace ma courbe 3d qui part dans tout les sens ...
ensuite  je dessine un cercle pour chaque point,et  apres je l'oriente grace a la fonction magique que je n'ai pas encore ici , et ca donne un tube courbé  qui part dans tout les sens (tu admettra qu'ici le deuxième vecteur est superflu ...
 
meme chose avec une étoile et j'ai une étoile extrudée dans tout les sens
 
bon tu va me dire qu'on peut dessiner ca d'une autre maniere, en calculant soit meme la position de chaque vertex, mais je cherche a faire ca avec des glrotate ou autre fonction opengl de facon a pouvoir utiliser directement des glbegin/ glvertex pour dessiner ma forme .... (qui risque detre autre chose qu'un cercle)


Message édité par red faction le 16-02-2008 à 20:13:30
n°1687368
bjone
Insert booze to continue
Posté le 16-02-2008 à 20:48:51  profilanswer
 

moi ce que je ferais:
 
a tes points clés, tu as un couple position+quaternion (tangente+angle autour de la tangente), qui défini la position de la forme.
 
tu interpoles le long de tes points clés avec une courbe d'hermite.
 
ça te donne un couple position+quaternion a chaque point d'interpolation.
 
de ce couple tu généres une matrice, tu applique la matrice aux vertices de ta forme initiale (cercle, étoile...), tu pousses tout ce petit monde dans un vector<>, et a chaque nouvelle étape poussée, tu généres les triangles qui lie la dernière forme a la nouvelle.
 
normalement tu te retrouve ainsi avec l'enveloppe extrudée de ta forme le long de ta courbe.  
il te restera plus qu'a faire les triangles des bouchons (caps comme on dit) avant et arrière.
 
mais surtout, surtout ne cherche pas a faire ça via des glmachins:
fais toi des vector<> qui vont stoquer la géométrie générée (vertices de 3 floats et indices de triangles de 3 int, donc deux vector<> )
 
edit: avec ta forme initiale composée de vertex de 3 flottants, et connectée par des lignes de 2 int, chaque ligne générant un quad 2 de triangles.


Message édité par bjone le 16-02-2008 à 21:04:41

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

  Orientation dans l'espace

 

Sujets relatifs
[Resolu ] Probleme CSS assez inexplicable : Espace blanc avec IE7[HTML] espace entre un titre et son soulignement
Espace blanc imposible à enlever[php] variable contenant un espace
Menu images, espace dans IE6 lorsqu'on agrandit la taille du texteénorme espace en début d'affichage
espace avant pied de page[résolu]Interception de signaux (barre espace ?)
Création d'espace membre[BATCH]Obtenir la taille de l'espace disque restant sur un PC distant
Plus de sujets relatifs à : Orientation dans l'espace


Copyright © 1997-2022 Hardware.fr SARL (Signaler un contenu illicite / Données personnelles) / Groupe LDLC / Shop HFR