Equation parametrique d'un cercle dans un repere local 3D(av

Réponses à toutes vos questions après le Bac (Fac, Prépa, etc.)
mister.jo
Messages: 9
Enregistré le: 23 Nov 2006, 15:02

equation parametrique d'un cercle dans un repere local 3D(av

par mister.jo » 23 Nov 2006, 15:25

Bonjour a tous,
alors voilà j'ai un petit souci et de grosses lacunes en mathématiques. Je fais un projet personnel en infographie (opengl/glut/c++), et mon probleme ets le suivant.

Je doit tracer un tube le long d'une suite de point. Pour chaque point je doit trouver la section (cercle) correcte définie par un ensemble de points, et je relie ensuite chaque section pour former un tube.

en gros, je veux dessinr un truc qui ressemble à ça:
Image

donc pour chaque point Pn du chemin:
le vecteur p1, vecteur directeur de la droite (Pn-1 -> Pn)
le vecteur p2, vecteur directeur de la droite (Pn -> Pn+1)

le vecteur orthogonal au plan défini par p1,p2.
ortho<- p1*p2 (produit vectoriel)
ce vecteur représente Oy dans le repere local

le vecteur de base, qui coupe l'angle formé par p1 et p2 en son milieu:
base<- p1+(-p2) (car p1 et p2 sont dans le meme sens)
ce vecteur représente Ox dans le repere local

le vecteur orthogonal à au plan défini par ortho et base:
direction <- base*ortho
ce vecteur représente Oz dans le repere local


On a donc un repere local dans lespace. Le probleme es que je dois en déduire les point du cercle dans ce repere (plus précisément dans le plan base/ortho), avec des coordonnées absolues (donc dans le repere classique Ox,Oy,Oz).

Pour trouver les coordonnées j'utilise uen équation paramétrique (plus simple pour programmer)

Pour le moment j'en est dédui ça:
soit O le centre du cercle
soit Ox, Oy et Oz les vecteur directeur des axes du repere local
r le rayon du cercle a tracer

le point P correspondant à un angle A (avec A de 0 à 2Pi) est:
P.x= O.x+(r*cos(A)*Ox.x)+(r*sin(A)*Ox.y)
P.y= O.y+(r*cos(A)*Oy.x)+(r*sin(A)*Oy.y)
P.z= O.z + ??


est-ce que je me trompe completement ou ya-til une part de vérité dans totu ça?
Et comment puis-je trouver ces point?



maturin
Membre Irrationnel
Messages: 1193
Enregistré le: 09 Nov 2006, 16:28

par maturin » 23 Nov 2006, 16:19

alors tu le dis pas explicitement mais j'imagine que ton cercle doit être orienté dans le plan orthogonal à Pn-1Pn+1, c'est à daire dans le plan Oxy de ton repère, et que son centre est Pn (que tu appelles aussi O)

son équation est donc:
Px=Ox+r.cos(a)
Py=Oy+r.sin(a)
Pz=Oz

Par contre si t'essaie de tracer ton tube faut que tu fasses gaffe car ta base Oxyz ainsi construite varie de point en point.

mister.jo
Messages: 9
Enregistré le: 23 Nov 2006, 15:02

par mister.jo » 23 Nov 2006, 16:31

Oui désolé g oublié de le préciser:
le centre du cercle est Pn, tracé dans le repere Oxy (local)

son équation est donc:
Px=Ox+r.cos(a)
Py=Oy+r.sin(a)
Pz=Oz

l'equation que tu fournie donne les coordonnées du point dans le repere local

Par contre si t'essaie de tracer ton tube faut que tu fasses gaffe car ta base Oxyz ainsi construite varie de point en point.

c'est justement pour ça que j'ai besoin de définir les coordonnées du point de façon absolue (par rapport au repere orthonormé de base), et non pas locale.
Car je relie deux point de chaque section ensuite

J'ai réfléchi un peu entre temps et je pense avori toruvé la solition:
ce n'est pas

P.x= O.x+(r*cos(A)*Ox.x)+(r*sin(A)*Ox.y)
P.y= O.y+(r*cos(A)*Oy.x)+(r*sin(A)*Oy.y)
P.z= O.z + (r*cos(A)*Oz.x)+(r*sin(A)*Oz.y)

mais plutot:
P.x= O.x+(r*cos(A)*Ox.x)+(r*sin(A)*Oy.x)+(r*sin(A)*Oz.x)
P.x= O.x+(r*cos(A)*Ox.y)+(r*sin(A)*Oy.y)+(r*sin(A)*Oz.y)
P.x= O.x+(r*cos(A)*Ox.z)+(r*sin(A)*Oy.z)+(r*sin(A)*Oz.z)

ça à l'air de fonctionner :D
je teste et je te dis

maturin
Membre Irrationnel
Messages: 1193
Enregistré le: 09 Nov 2006, 16:28

par maturin » 23 Nov 2006, 17:00

si tu prends ta base mouvante définie pour le point Pn

pour un point M de ton cercle
tu as

donc dans une base de centre tu calcules tes coordonnées en faisant les produits scalaires sur chaque axe :
ce qui te donne (avec )




ceci ressemble plus à tes premières équations. enfin en gros on a des problèmes de notation, je me suis appliqué j'ai mis du bô texte j'espère que ça t'aidera.

mister.jo
Messages: 9
Enregistré le: 23 Nov 2006, 15:02

par mister.jo » 23 Nov 2006, 21:36

merci pour ces informations maturin
Mais j'ai quelques problemes.
L'équation marche selon certains cas seulement (j'ai un cercle correct, ou sinon une sorte d'elipse: cercle avec les coordonnées x, y ou z trop petites)

Ta fonction marche pour tous les cas?
Image
Les axes Xn,Yn et Zn restent toujours orthogonaux mais l'orientation peut changer.

Un petit exemple en image:
Image

Certes il ya la perspective, mais les cercles n'en sont pas.
De plus, ils ne "suivent" pas les vecteurs Xn (en bleu) et Yn (en rouge) en chaque point. (le segment vert repséente le vecteur Oz)

Avatar de l’utilisateur
nuage
Membre Complexe
Messages: 2214
Enregistré le: 09 Fév 2006, 22:39

par nuage » 23 Nov 2006, 21:53

Salut,
Il est possible que le problème provienne du fait que les vecteurs ne sont pas normés.
Je n'ai pas lu tous les calculs en détails mais j'ai l'impression que c'est le cas.
Sinon j'avais écrit un programme comme ça il y a une quinzaine d'années, et je garde le souvenir de qqc d'assez complexe.
Malheureusement il a disparu avec des changements de machines. Et ce soir j'ai un peu la flemme... :zen:

Bon courage et @+

mister.jo
Messages: 9
Enregistré le: 23 Nov 2006, 15:02

par mister.jo » 23 Nov 2006, 22:28

arf dans quoi j'ai encore mis les pieds :s

merci encore

PS: qu'entend tu par "normés"? (je confond avec le terme normalisé, dans ce cas les vecteurs du repere sont normalisés (chaque composante divisée par la norme))

Avatar de l’utilisateur
nuage
Membre Complexe
Messages: 2214
Enregistré le: 09 Fév 2006, 22:39

par nuage » 23 Nov 2006, 23:21

Salut
"mister.jo" a écrit:qu'entend tu par "normés"? (je confond avec le terme normalisé, dans ce cas les vecteurs du repere sont normalisés (chaque composante divisée par la norme))
C'est exactement ce que je veux dire.

Il reste un problème numérique pour :
-- l'initialisation
-- le cas des points "presque alignés"
-- la "torsion" de la courbe.

C'est du moins mon souvenir.

[edition] pour la torsion : mon pb était de construire des polygones autours de la courbe et donc de raccorder les points. ce n'est peut-être pas le tien.


A+

mister.jo
Messages: 9
Enregistré le: 23 Nov 2006, 15:02

par mister.jo » 24 Nov 2006, 00:03

si c'est exactement mon probleme ^^
En gros je veux créer un tube extrudé autour d'une courbe (ou d'une suite de points).

je viens de tomber sur un ennoncé de Tp ([url=ici]http://www.irit.fr/~Loic.Barthe/Enseignements/TPs_OpenGL/M1_IO5/TP9/tp9.html[/url] ) qui correspond tout à fait à ce que je veux faire.
Je vais me renseigner de ce coté là (particulierement les reperes de Frénet qui ont l'air d'etre utilisés) et je vous tiens au courant

Avatar de l’utilisateur
nuage
Membre Complexe
Messages: 2214
Enregistré le: 09 Fév 2006, 22:39

par nuage » 24 Nov 2006, 00:23

Salut.
Les repères de Fresnel sont, pour autant que je m'en souvienne, trés mal adaptés au problème.
A cause de la torsion, en particulier, il est difficille de faire un raccord entre le début et la fin de la courbe.
J'avais été conduit à considérer les fonctions comme des listes de points.
Mais pour les détails, je regarderai mes archives (sans garantie de réponse)

A+

mister.jo
Messages: 9
Enregistré le: 23 Nov 2006, 15:02

par mister.jo » 24 Nov 2006, 11:30

Je vais retenter en utilisant ça:
http://fr.wikipedia.org/wiki/Coordonn%C3%A9es_homog%C3%A8nes#Application_au_changement_de_rep.C3.A8re_isom.C3.A9trique

La seule difficulté consistera à trouver la rotation impliquée dans le changement de repere. Il faut donc que je toruve les angles de rotation selon les différents axes pour amener le repere original vers mon repère local (n'étaant pas là ce week end je verria ça en rentrant)

 

Retourner vers ✯✎ Supérieur

Qui est en ligne

Utilisateurs parcourant ce forum : Aucun utilisateur enregistré et 66 invités

Tu pars déja ?



Fais toi aider gratuitement sur Maths-forum !

Créé un compte en 1 minute et pose ta question dans le forum ;-)
Inscription gratuite

Identification

Pas encore inscrit ?

Ou identifiez-vous :

Inscription gratuite