Calcul dans un repère défini par 3 points
Bonjour
Je souhaite connaitre la formule de calcul d'un repère orthonormé par trois points X,Y,Z.
Le point 1 (P1x,P1y,P1z) est l'origine du repère
L'axe X passe par le point 2
L'axe Y passe par le point 3
Les rotations sont en angles d'EULER
REPERE = CALC_REPERE(P1,P2,P3)
REPERE = (P1x,P1y,P1z,Rx,Ry,Rz)
Exemples :
Pascal
Je souhaite connaitre la formule de calcul d'un repère orthonormé par trois points X,Y,Z.
Le point 1 (P1x,P1y,P1z) est l'origine du repère
L'axe X passe par le point 2
L'axe Y passe par le point 3
Les rotations sont en angles d'EULER
REPERE = CALC_REPERE(P1,P2,P3)
REPERE = (P1x,P1y,P1z,Rx,Ry,Rz)
Exemples :
POINTS APPRIS X Y Z P1 -41.913 2128.496 141.855 P2 2005.874 694.62 141.855 P3 394.373 2751.577 1773.146 RESULTAT = -41.913 2128.496 141.855 65, 0, -35 (X,Y,Z,Rx,Ry,Rz) P1 1720.351 -984.41 122.465 P2 327.874 -1959.434 122.465 P3 2083.891 -1503.598 1481.825 RESULTAT = 1720.351 -984.41 122.465 65, 0, -145 P1 1375.538 -263.942 0 P2 359.354 -962.233 0 P3 1205.882 -1731.516 802.145 RESULTAT = 1375.538 -263.942 0 35.77, 0, -145.5 P1 377.142 1824.728 292.547 P2 1577.069 984.51 292.555 P3 1276.269 1834.595 1750.54 RESULTAT = 377.142 1824.728 292.547 70.238, 0, -35 P1 1000 0 0 P2 2000 0 0 P3 1000 -1000 0 RESULTAT =1000 0 0 180, 0, 0 P1 2000 0 0 P2 1000 0 0 P3 1000 -1000 0 RESULTAT =2000 0 0 0, 0, 180 P1 1000 -1000 0 P2 1000 0 0 P3 2000 0 0 RESULTAT =1000 -1000 0 180, 0, 90Merci d'avance.
Pascal
Réponses
-
Les angles d' Euler me semblent être définis pour une droite de l'espace et dans l'espace un repère a en principe trois axes.
Or tu nous parles de deux axes seulement, bizarre, bizarre.
D'autre part ta phraseJe souhaite connaitre la formule de calcul d'un repère orthonormé par trois points X,Y,Z.
Amicalement
Pappus -
On suppose sans doute les vecteurs $\overrightarrow{P_1P_2}$ et $\overrightarrow{P_1P_3}$ orthogonaux...
-
Bonjour,
La formulation n'est peut être pas la bonne mais le but est de calculer dans l'espace un repère par 3 points et obtenir un résultat de type X,Y,Z,W,P,R ou X,Y,Z sont l'origine du repère et W,P,R (Rx,Ry,Rz en français).
J'ai un petit dessin qui sera plus explicite, je l'espère. Voir fichier joint
-
Ce n'est pas très clair.
Il faudrait donner un nom précis aux objets initiaux et aux objets finaux.
On se donne dans l'espace euclidien 3 points $A$, $B$, $C$ et on recherche les repères orthonormés $\{O;\vec i~, \vec j~, \vec k~\}$ dont les axes $O + \R \vec i~$, $O + \R \vec j~$, $O + \R \vec k~$ passent respectivement par les points $A$, $B$, $C$.
Est-ce cela ton problème?
Amicalement
Pappus -
Bonjour Pappus,
Nous avons bien 3 points (A,B,C ou P1,P2, P3) exprimés dans un repère donné et nous cherchons à exprimer le repère construit par ces 3 points dans le repère de base.
Le repère calculé est en fait un repère orthonormé ou trièdre direct (3 directions perpendiculaires).
Les termes que j'utilise sont ceux de la robotique mais pas forcément de formules mathématiques et je m'en excuse;
En résumé :
- J'ai 3 points P1,P2 et P3 situés dans l'espace (coordonnées X, Y et Z pour chacun)
- Je créé un repère à l'aide de ces 3 points (trièdre direct) = repère bleu de mon schéma
- J'exprime la position du repère calculé par rapport au repère d'origine.
Cela se comprend plus aisément sur un logiciel de CAO
merci. -
Il me semble que cela est juste et correspond à ce que je cherche.
La fonction (repere=frame(P1,P2,P3)) existe dans certains robots mais pas dans celui que j'utilise malheureusement.
Merci à tous de votre recherche. -
Si j'ai bien compris Pierre, ce n'était qu'un problème de drapeau à orthonormaliser!
Pas très passionnant pour un géomètre.
Je n'aurais pas cru que cela put avoir des applications industrielles.
Ceci dit, mon problème qui n'a rien à voir avec celui de pascal33 est lui aussi intéressant.
Connaissant les coordonnées des points $A$, $B$, $C$ (dans un repère orthonormé), comment récupérer celles du point $O$ s'il existe et éventuellement les composantes des vecteurs $\vec i ~$, $\vec j ~$, $\vec k ~$,?
Amicalement
Pappus -
Le calcul d'un repère par 3 points est-il compliqué ?
Le besoin est important pour moi.
Merci de votre aide pour la formule. -
$P_1$ étant l'origine,
1- on remplace $P_2$ par $P_2-P_1$, puis $P_3$ par $P_3-P_1$.
2- On norme $P_2$ en calculant $\overrightarrow i=P_2/\Vert P_2\Vert$
3- on orthogonalise $P_3$ en calculant $Q_3=P_3-(P_3\mid \overrightarrow i)\overrightarrow i$
4- On norme $Q_3$ pour obtenir $\overrightarrow j =Q_3/\Vert Q_3 \Vert$.
5- Enfin on calcule $\overrightarrow k = \overrightarrow i \wedge \overrightarrow j$. -
Merci Zephir
N'étant pas mathématicien mais informaticien, je recherche la formule littérale pour la programmer.
Merci d'avance de me la transmettre. -
@pascal33
Il n'y a pas une formule, mais une succession de calcul à faire pour déterminer les vecteurs $i,j,k$; A partir de là, on peut calculer les $Rx,Ry,Rz$ dont je ne connais pas la définition exacte. Je t'ai décrit l'algorithme de calcul. S'il y a des composants dans cet algorithme que tu ne comprend pas, tu peux me préciser lesquels.
Le symbole $(X\mid Y)$ désigne le produit scalaire des vecteurs $X$ et $Y$.
Le symbole $\Vert X\Vert$ désigne la norme euclidienne du vecteur $X$ c'est-à-dire $\sqrt {(X\mid X)}$.
Le reste est clair (me semble-t-il).
Cordialement,
zephir. -
Les fonctions dont je dispose pour programmer sont les fonctions de base (SIN,COS,ATAN,..).
Il me faut donc tout écrire de manière littérale... et je ne suis pas mathématicien.
Merci donc de me donner toutes les formules et calculs successifs.
Je renouvelle mes remerciements par avance. -
Est-ce qu'on a le droit de définir des fonctions et/ou des sous-programmes ?
Par exemple si on note un vecteur de l'espace par un tableau $X$ à trois coordonnées $X[1],X[2],X[3]$, puis-je définir une fonction $ps(X,Y)$ qui retourne le produit scalaire de $X$ par $Y$ ? puis-je définir une fonction $diff(X,Y)$ qui retourne le vecteur $Y-X$ ? Jusqu'où faut-il aller dans le détail ? -
J'ai bien peur qu'il faille tout détailler.
Je peux néanmoins construire des fonctions.
Merci et bon week-end. -
Je vais faire une tentative en définissant cinq fonctions :
Les donnée sont des vecteurs à trois coordonnées, pour les majuscules.
1- fonction ps(X,Y) retourne (X[1]*Y[1]+X[2]*Y[2]+X[3]*Y[3])
2- fonction norme(X) retourne (racine carré(ps(X,X)).
3- fonction diff(X,Y) retourne (vecteur (Y[1]-X[1],Y[2]-X[2],Y[3]X[3]))
4- fonction scalarmul(a,X) retourne(vecteur (a*X[1],a*X[2],a*X[3])).
5- fonction vectoriel(X,Y) retourne(vecteur(X[2]*Y[3]-X[3]*Y[2],X[3]*Y[1]-X[1]*Y[3],X[1]*Y[2]-X[2]*Y[1]))
Notre programme prend en entrée trois vecteurs (P1,P2,P3)
Il renvoie la base orthonormée (i,j,k). On calcule maintenant.
1- R2=diff(P1,P2)
2- R3=diff(P1,P3)
3- a=1/norme(R2)
4- i=scalarmul(a,R2)
5- b=ps(i,R3)
6- Q1=scalarmul(b,i)
7- Q2=diff(Q1,R3)
8- c=1/norme(Q2)
9- j=scalarmul(c,Q2)
comment . On a, à ce stade les deux vecteurs (i,j) base orthonormée du plan (P1,P2,P3)
reste à calculer k=produit vectoriel de i et j
10- k=vectoriel(i,j)
Avec çà, je pense que ça doit aller. -
Bonjour Pascal
J'ajouterai au message de Zephir que en 3) et en 8) il faut prendre les précautions d'usage :
En 3) norme(R2) supérieur à une certaine quantité que tu t'es fixée (par ex 1.e-15) : les points P1 et P2 ne doivent pas être trop proches
En 8) norme(Q2) supérieur à la même quantité : les 3 points P1, P2, P3 ne doivent pas être presque alignés.
Alain -
Merci Alain pour ces précisions nécessaires quand on veut faire une programmation robuste.
Il faut donc ajouter une constante e petite et une fonction d'erreur du type erreur("message") qui affiche "message" et arrête le calcul. 3) devient
3)' a=norme(R2) si a<e alors erreur("P1 et P2 trop proches")
3)'' a=1/a
8) de même devient
8)' c=norme(Q2) si c<e alors erreur("P1,P2,P3 sont presque alignés")
8)'' c=1/c
Là, c'est plus robuste. -
Une incise, sans doute hors-sujet ici : à propos de robustesse, l'algorithme proposé par zephir me semble être juste Gram-Schmidt. Utiliser Gram-Schmidt pour orthonormaliser une famille de vecteurs est notoirement numériquement instable, il est préférable d'utiliser l'algorithme QR. Maintenant, tout cela n'a sans doute aucune importance pour juste deux vecteurs, d'où le hors-sujet...
-
C'est exact Monseigneur. C'est Gram-Schmidt. Pour les petites dimensions il n'y a pas de soucis.
Mais c'est un passage obligé s'il faut orthonormaliser un drapeau.
J'ai regardé la méthode QR et j'ai trouvé "c'est ... Gram-Schmidt". Alors si tu pouvais m'éclairer ...
Amicalement,
zephir. -
En effet, QR réalise bien l'orthonormalisation de Gram-Schmidt ou en tout cas une orthonormalisation produisant la même base mais peut-être à des signes près (je ne me souviens plus trop). Il ne le fait pas en appliquant les formules de Gram-Schmidt directement mais avec des matrices de Householder. Il y a un choix à faire à ce niveau là dans l'algorithme dont on peut s'arranger pour qu'il soit robuste (ie si le vecteur dans la matrice de Householder est très petit, il y a un autre choix de vecteur qui marche aussi et qui est raisonnable).
-
Bonjour,
Je suis arrivé à déterminer l'algorithme de calcul à l'aide de ce Forum et les explications de Zephir en prenant pour principe que P1 = Origine.
Cependant je souhaiterais déterminer l'algorithme de calcul si P1 est sur l'axe X+ et P3 traversant Y+.
Les orientations seront les memes mais je n'arrive pas à calculer la coordonnée résultante X Y Z.
Auriez-vous une idée ?
En vous remerciant par avance.
-
Bonjour,
Personne n'a une idée sur le sujet ? -
Je désespère. C'est important pour moi de trouver la solution.
-
Merci Raoul mais non je ne crois pas.
Voici un exemple pour mieux expliquer ma question
3 points dont le point1 = origine
P1 X = 17.180 Y = -671.600 Z = -270.740
P2 X = 1132.950 Y = -171.300 Z = -270.710
P3 X = 17.260 Y = -174.070 Z = -271.500
Par le calcul j'ai comme résultat final :
X = 17.1800 Y = -671.600 Z = -270.740 Rx = -0.097 Ry = -0.001 Rz = -24.151
Maintenant mon soucis est quand P1 n'est pas l'origine mais est sur l'axe X+ et P3 traversant Y+
en résultat final je devrais trouver :
X = 202.990 Y = -588.285 Z = -270.735 Rx = -0.097 Ry = -0.001 Rz = -24.151
Cependant je n'arrive pas à déterminer l'algorithme.
En vous remerciant de votre aide -
poupack ok je me rends compte que pour t'aider je dois mieux me plonger dans le sujet et j'avoue ne pas être disposé à le faire. Désolé.
Si tu as de la chance peut-être que quelqu'un d'autre pourra t'aider... -
Merci Raoul pour ta sincérité.
-
Serait-ce vraiment très complexe à déterminer ?
-
Je réponds avec énormément de retard.
Je n'en sais rien si c'est complexe. Je me suis rendu compte qu'il s'agit de robotique, et pour comprendre le problème il faut un minimum comprendre le jargon qui est utilisé dans ce domaine en particulier les coordonnées w (yaw), p (pitch) et r (roll) et n'étant absolument pas passionné de géométrie vectorielle je passe la main désolé. -
Merci tout de meme Raoul.S pour ta réponse. Effectivement il s'agit de robotique et je reste toujours buté sur l'algorithme.
Si quelqu'un aurait une piste de réponse...
En vous remerciant par avance -
Bonsoir !Je suis toujours à la recherche d'une solution !! En vous remerciant de votre aide par avance !
Connectez-vous ou Inscrivez-vous pour répondre.
Bonjour!
Catégories
- 163.1K Toutes les catégories
- 7 Collège/Lycée
- 21.9K Algèbre
- 37.1K Analyse
- 6.2K Arithmétique
- 52 Catégories et structures
- 1K Combinatoire et Graphes
- 11 Sciences des données
- 5K Concours et Examens
- 11 CultureMath
- 47 Enseignement à distance
- 2.9K Fondements et Logique
- 10.3K Géométrie
- 62 Géométrie différentielle
- 1.1K Histoire des Mathématiques
- 68 Informatique théorique
- 3.8K LaTeX
- 39K Les-mathématiques
- 3.5K Livres, articles, revues, (...)
- 2.7K Logiciels pour les mathématiques
- 24 Mathématiques et finance
- 312 Mathématiques et Physique
- 4.9K Mathématiques et Société
- 3.3K Pédagogie, enseignement, orientation
- 10K Probabilités, théorie de la mesure
- 772 Shtam
- 4.2K Statistiques
- 3.7K Topologie
- 1.4K Vie du Forum et de ses membres