Rotation d'une base dans l'espace

Résolu
atchoumdu51 Messages postés 194 Date d'inscription jeudi 1 janvier 2004 Statut Membre Dernière intervention 16 juillet 2007 - 23 déc. 2005 à 22:24
atchoumdu51 Messages postés 194 Date d'inscription jeudi 1 janvier 2004 Statut Membre Dernière intervention 16 juillet 2007 - 26 déc. 2005 à 11:57
Bonjour,

j'ai essayé de regarder quelques sources sur la 3D mais en partant d'aucune je ne trouve l'idée corrspondant a mon probleme.

Je voudrais afficher des courbes en 3D sous flash. Je crée donc un tableau contenant les coordonnées des points que je relie par lineTo et je trace une courbe initiale en 3D avec les trois vecteurs unitaires initiaux.

Ensuite je voudrais que l'utilisateur puisse faire tourner cette base et la se pose mon probleme.
Je compte récupérer les cliquer/glisser sur la fenetre, apliquer une rotation sur mon repere, récupérer des projections de chaque coordonnée sur les axes x et y de l'écran puis tracer ma courbe...
mais je ne sait pas du tout comment faire tourner le repere dans l'espace
et je cherche donc la méthode pour réaliser ceci...

merci bien

21 réponses

atchoumdu51 Messages postés 194 Date d'inscription jeudi 1 janvier 2004 Statut Membre Dernière intervention 16 juillet 2007 1
26 déc. 2005 à 03:24
Bon alors voila ma solution expliquée:

je défini chaque vecteur par deux rotations comme le montre le dessin:

sachant que chaque vecteur possede SA propriété angle1 et angle2
pour x on initialise a (0,0)
y (90,0)
z (0,90)

un mouvement verticla modifie angle1 et un mouvement horizontal angle2 pour chacun des vecteurs
ensuite il suffit de projeter le vecteur sur x et y avec des formules de trigo:
cos(angle1)*cos(angle2) sur x et sin(angle1) sur y

une méthode qui n'est cependant pas parfaite pour le maniement facile selon x mais assez difficile sur y

j'ai exploité ceci pour cette animation:
www.nounourspower.com/bezier/bezier.html
pour simplifier faites charger une courbe (en bas) tracer pui jouez avec la souris
3
SuperDevy Messages postés 842 Date d'inscription dimanche 24 novembre 2002 Statut Membre Dernière intervention 2 juillet 2007
23 déc. 2005 à 22:30
Tu devrais pouvoir le faire avec Sandy

SuperDevy, c la !
0
atchoumdu51 Messages postés 194 Date d'inscription jeudi 1 janvier 2004 Statut Membre Dernière intervention 16 juillet 2007 1
23 déc. 2005 à 22:47
Merci je vais essayer d'avancer avec ca mais ca fait un peut usine a gaz...mon but était de trouver une méthode qui en partant d'un mouvement sur l'écran me permetrais de construire mon nouveau repere sans passer par toute une grosse artillerieje veux juste faire tourner une base de vecteurs dans l'espace...pas tout un moteur graphique
0
atchoumdu51 Messages postés 194 Date d'inscription jeudi 1 janvier 2004 Statut Membre Dernière intervention 16 juillet 2007 1
23 déc. 2005 à 22:56
je crois d'ailleur que pour arriver a mes fins je vais mettre 3 tirettes qui permettent de modifier les angles d'euler et ensuite appliquer les formules de changement de repere..mais ca me fait mal au coeur quand même j'aurais bien voulu ce petit glisser sur la frame...
0

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
cortoh Messages postés 1255 Date d'inscription dimanche 18 décembre 2005 Statut Membre Dernière intervention 2 décembre 2008
23 déc. 2005 à 23:55
je vais surement dire une connerie, mais ne peux tu mettre un ecouteur sur les mouvements de la sourie qui recupere les informations de mvt de la souris (x, y et les hits) et que tu transmettrais a ta bse, ou pour la reconstruction de ton repere? tu conserves la legerete du a classe BitmapData sans construire un moteur 3D... mais bon, je suis plutot curieux qu'expert en la matiere... ceci etant, sandy a l'air plutot sympa mais, il me semble que c'est un ensemble de class de modelisation 3D, et BitmapData "simule" la 3D non?

Felix, joyeux Noel Felix!
0
atchoumdu51 Messages postés 194 Date d'inscription jeudi 1 janvier 2004 Statut Membre Dernière intervention 16 juillet 2007 1
24 déc. 2005 à 00:03
Pour ce qui est de l'écouteur je suis d'accord j'étais partit comme ca.

Pour BitmapData, je ne la connais pas du tout je vais aussi regarder ca au cas ou il y aurait une fonction qui m'avancerait.

Pour sandy je pense que j'y trouverais mon bonheur mais je n'est aps forcément envie d'une appli si lourde pour ca.

En cours on nous a apris que pour passer d'un repere a un autre sans changement d'unité il suffit de 3 rotations que j'ai. Le probleme est en fait de convertir le mouvement de la souris en une variation des 3 angles et c'est la mon probleme...
0
cortoh Messages postés 1255 Date d'inscription dimanche 18 décembre 2005 Statut Membre Dernière intervention 2 décembre 2008
24 déc. 2005 à 00:54
quel est ton relatonel de depart entre
les composantes de la souris et ton referentiel? tu as besoin de 3
rotations chnager de reperes mais n'y t il pas une des 3 rotations qui
pourraient ne pas etre dynamique parce que constante? puisque tu ne
dispose que de deux variables avec la souris, xmouse et ymouse, il t'en
manque une pour incremennter la 3eme variation... en fait, il te
manquerait la fonction que l'on avec du java, de pouvoir agir sur l'axe
z avec la touche ctrl enfoncee pendant que l'on bouge la
souris...

quand a la convertion en variation d'angle, c'est la methode que tu cherches? d'un point de vue mathematique, je veux dire?


Felix, joyeux Noel Felix!
0
atchoumdu51 Messages postés 194 Date d'inscription jeudi 1 janvier 2004 Statut Membre Dernière intervention 16 juillet 2007 1
24 déc. 2005 à 01:21
Bon j'ai mis trois tirettes provisoirement (BitmapData ne permettait rien qui semblait subvenir a mon probleme) et avec les formules de changement de repere (un peut lourde pour si peut) ca fonctionne...mais si quelqu'un trouve une solution pour faire tourner cette base je suis preneur (en fait revenir a une API 3D ramene quand même au probleme...l'API prend en argument un angle de rotation que je ne peut pas lui donner puisque c'est ce que je recherchais par ce post...

Enfin je ne posterais pas cette aplication ici car je trouve qu'elle n'aporte aucun intéret pour le site, aucune fonction qui permettrait à d'autres de progresser.

Merci a SuperDevy et a Cortoh!
0
SuperDevy Messages postés 842 Date d'inscription dimanche 24 novembre 2002 Statut Membre Dernière intervention 2 juillet 2007
24 déc. 2005 à 01:25
Ouf, tu travails tard dit !

Tu n'es pas obligé d'utiliser toutes les fonctionnalités de Sandy, mais juste avec le moteur de base ça peut le faire :)

SuperDevy, c la !
0
atchoumdu51 Messages postés 194 Date d'inscription jeudi 1 janvier 2004 Statut Membre Dernière intervention 16 juillet 2007 1
24 déc. 2005 à 01:37
Désolé pour ton dernier post cortoh j'avais pas rafraichi la page.

Le gros probleme est justemen que avec xmouse et ymouse je ne peut incrémenter que deux angles "intuitivement" or j'ai besoin d'en modifier 3. J'ai un repere fixe avec les x et y de l'écran et le z qui en sort pour avoir un repere orthonormal direct dans lequel je me repere pour afficher. Et un repere tournant (dans l'espace donc avec les 3 angles d'euler) dans lequel sont exprimées les coordonnées de mes points. Le tout est de savoir quels angles modifier quand on fait un mouvement de la souris, si un des vecteurs est aligné avec un vecteur du repere d'origine c'est assez simple mais des que le repere est totalement quelconque pour moi la trivialité s'échappe :p

Ehh oui SuperDevy pour moi c'est les vacances seulement le soir, trop de boulo la journée!!!
Pour Sandy je viens d'y réfléchir et peut etre qu'il y a une solution, je vais esayer de voir ca demain il faut que j'apprene a me servir de l'API

Si vous voulez voir le résultat je l'ai mis en ligne sur www.nounourspower.com/bezier.html
0
cortoh Messages postés 1255 Date d'inscription dimanche 18 décembre 2005 Statut Membre Dernière intervention 2 décembre 2008
25 déc. 2005 à 01:44
non, non, soit tu fixes un axe (je dirais y ici) soit tu utilises un keyDown (genre ctrl ou 0) pour incrementer ton, 3emem axe...


Felix, joyeux Noel Felix!
0
atchoumdu51 Messages postés 194 Date d'inscription jeudi 1 janvier 2004 Statut Membre Dernière intervention 16 juillet 2007 1
25 déc. 2005 à 01:49
je ne vois pas trop ce que vous voulez en fait. Quand la base es ttotalement quelconque et que je fais un drag and drop a ala souris je ne tourne pas autour d'un axe de mon repere donc je ne peut pas intuitivement modifier les angles. Si tu veux j'ai un exemple ou ma courbe est remplacée par la terre...http://science.nasa.gov/realtime/jtrack/3d/JTrack3D.html mon but est de faire tourner ma courbe "comme" la Terre et je ne vois pas trop comment faire
0
cortoh Messages postés 1255 Date d'inscription dimanche 18 décembre 2005 Statut Membre Dernière intervention 2 décembre 2008
25 déc. 2005 à 02:14
on avait bien compris...bon en fait, avec 2 variables, on obtient un mouement de rotation sur 3 axes... et comment? je crois que la reponse est claire:
tu assignes une "distance" que la souris doit parcourir pour representer une variation de 180° et audela, tu effectues une rotation... hmm, je m'apercois que je ne suis pas tres clair... reveillon de noel oblige! en fait, sur l'exemple la nasa, il n'y a aucune, variation sur Z... la rotation asymetrique de la terre est en fait une combinaison du mouvement sur X et sur Y... vive la trigo! deplus, leur terre est un objet 3D, ou tous les points sont references sur 3 axes... bon, je reprendrai le post demain, apres mure reflection, (et repos) mais je ne crois pas que la solution soit si eloignee que ca...


Felix, joyeux Noel Felix!
0
atchoumdu51 Messages postés 194 Date d'inscription jeudi 1 janvier 2004 Statut Membre Dernière intervention 16 juillet 2007 1
25 déc. 2005 à 02:58
justement ma courbe est en 3D. La solution est peut etre proche je continue de chercher...pour la premiere partie je suis d'accord c'est apres que ca se corse...peut on représenter toutes les possibilités avec seulemtn les deux rotation...je vais essayer de me le représenter demain j'ai peut etre oublié quelque chose...

Bonne nuit
0
cortoh Messages postés 1255 Date d'inscription dimanche 18 décembre 2005 Statut Membre Dernière intervention 2 décembre 2008
25 déc. 2005 à 03:10
ben je crois oui, avec des fonctions sin et cos... pour tes verticales, a(cos 0, sin(angle)), tes horizontales, cos(angle), sin 0) et toutes tes obliques, ta resultantes est (cos(angle), sinc(angle)) ou peut-etre tan... en meme temps, ca fait plus de 10 ans que j'ai laisse tombe la trigo...


Felix, joyeux Noel Felix!
0
atchoumdu51 Messages postés 194 Date d'inscription jeudi 1 janvier 2004 Statut Membre Dernière intervention 16 juillet 2007 1
25 déc. 2005 à 12:45
le probleme vient en fait que quand tu as fait faire par exemple en partant du repere d'origine 90° autour de y et que tu fait un drop vertical je fvais faire tourner autout de x alors que ce serait autour de z qu'il faudrait faire tourner (puisque z aura pris la place initiale de x...)enfin j'ai un peut de mal a expliquer j'ai fait un petit dessin qui parlera peut etre mieux:
0
cortoh Messages postés 1255 Date d'inscription dimanche 18 décembre 2005 Statut Membre Dernière intervention 2 décembre 2008
25 déc. 2005 à 19:02
bon alors dans le desordre, et en vrac, qques pensees post-noeliennes:
d'abord, finalement, tu vas simuler un espace 3D, puisque tu restes toujours sur un ecran. de cela, decoule en fait le reperage d'un point par son azimut et sa direction, comme lorsque tu utilises une boussole. de la, on pense carte, de la on pense projection, genre mercator et hop, je deboule sur le site:
http://mathworld.wolfram.com/topics/Geometry.html ou tu trouveras une rubrique sur la geometrie projective, ou sur la geometrie spatiale... que tu connais surement deja, mais la, en fouillant un peu, tu devrais trouver ton bonheur... me semble-t-il... va aussi voir la partie applet 3D, il y a qques exemples qui me semblent en directe relation avec ton pb...et enfin, une remarque:
lorsque tu agis sur un objet 3D en ligne, VRML ou JAVA, il se passe qque chose: au moment ou tu presses le bouton de la souris pour effectuer le mouvement de rotation, tu fixes un des axes! toujours...enfin, je n'ai pas rencontre de contre-exemple encore... si on part du principe qu'a chaque pression de la souris, tu fixes un axe, le rpobleme se simplifie bcp, non? hein, j'suis un mec cool, hein, hein? =)
et enfin, pour terminer avec mes conneries, et apres j'arrete, le 3DXML, ne serait-ce pas une piste?


Felix, joyeux Noel Felix!
0
atchoumdu51 Messages postés 194 Date d'inscription jeudi 1 janvier 2004 Statut Membre Dernière intervention 16 juillet 2007 1
25 déc. 2005 à 23:15
Bon alors je change de stratégie: je vais reperer chaque vecteur unitaire par deux angles par rapport à deux vcteurs de référence et les initialiser (par exemple x(0,0), y(90,0) et z(0,90) puis le drag de la souris modifira ces angles indépendament les uns des autres, et la ca devrait fonctionner....je vous tient au courant
0
cortoh Messages postés 1255 Date d'inscription dimanche 18 décembre 2005 Statut Membre Dernière intervention 2 décembre 2008
25 déc. 2005 à 23:40
ok, atchoum, on bouge pas! atchoum, non mais j'te jure... pfff! =) hehe...


Felix, joyeux Noel Felix!
0
cortoh Messages postés 1255 Date d'inscription dimanche 18 décembre 2005 Statut Membre Dernière intervention 2 décembre 2008
26 déc. 2005 à 03:40
ben tu vois, j'ai ete moqueur, mais la, je dis respect! parceque t'as pas lache l'affaire! et t'as fini par trouver! bon, heureusement qu'on t'a aiguille (kof, kof...) mais bravo quand meme! AA....AAA....AAAAATCHOUM! ah, encore me choper la creve si ca continue!

bravo mec!


Felix, joyeux Noel Felix!
0
Rejoignez-nous