IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Mathématiques Discussion :

Changement de repère


Sujet :

Mathématiques

  1. #1
    Membre éclairé
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Avril 2010
    Messages
    517
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Gironde (Aquitaine)

    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : Santé

    Informations forums :
    Inscription : Avril 2010
    Messages : 517
    Points : 718
    Points
    718
    Par défaut Changement de repère
    Bonjour tout le monde,

    Je sais que ce sujet est traité quelques millions de fois mais je ne trouve pas d'explication "simple" et surtout pas d'exemple concret pour permettre de trouver une matrice de passage d'un repère A à un repère B (tous les deux sont orthonormés et en 3 dimensions).

    J'ai 3 points dont je connais leurs coordonnées dans les 2 bases: P1(X1a, Y1a, Z1a), P2(X2a, Y2a, Z2a) et P3(X3a, Y3a, Z3a) (les coordonnées des points dans le repère A).
    P1(X1b, Y1b, Z1b), P2(X2b, Y2b, Z2b) et P3(X3a, Y3b, Z3b) (les coordonnées des points dans le repère B).

    J'obtiens donc une égalité suivante:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    |X1b X2b X3b|      |X1a X2a X3a|
    |Y1b Y2b Y3b| = P. |Y1a Y2a Y3a|
    |Z1b Z2b Z3b|      |Z1a Z2a Z3a|
    Avec P la matrice de passage.

    Est-ce que simplement à partir de cette information, on peut obtenir une matrice de passage?

    Si oui, quelles sont toutes les étapes à faire pour obtenir cette matrice? (Je sais qu'il existe des bibliothèques et des outils pour faire ça, mais j'aimerais comprendre le raisonnement pour calculer les matrices de passage)

    Merci

  2. #2
    Responsable Qt & Livres


    Avatar de dourouc05
    Homme Profil pro
    Ingénieur de recherche
    Inscrit en
    Août 2008
    Messages
    26 617
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Val de Marne (Île de France)

    Informations professionnelles :
    Activité : Ingénieur de recherche
    Secteur : Enseignement

    Informations forums :
    Inscription : Août 2008
    Messages : 26 617
    Points : 188 587
    Points
    188 587
    Par défaut


    Sans même considérer qu'il s'agit d'un changement de repère, a priori, tu as neuf inconnues (les neuf composantes de la matrice P) et neuf équations linéaires (égaler les coordonnées dans un repère avec celles dans l'autre). In extenso, pour un point :

    Code mathematica : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    P = {{p11, p12, p13}, {p21, p22, p23}, {p31, p32, 
        p33}}; (* P//MatrixForm *)
    {x1, y1, z1} == P .{x2, y2, z2} // Thread



    Formule mathématique



    Formule mathématique
    Formule mathématique
    Formule mathématique

    De là, ça semble jouable (si le système complet admet une solution unique). Ça n'est sûrement pas la réponse la plus esthétique, ça n'est que du calcul.
    Vous souhaitez participer aux rubriques Qt (tutoriels, FAQ, traductions) ou HPC ? Contactez-moi par MP.

    Créer des applications graphiques en Python avec PyQt5
    Créer des applications avec Qt 5.

    Pas de question d'ordre technique par MP !

  3. #3
    Membre éclairé
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Avril 2010
    Messages
    517
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Gironde (Aquitaine)

    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : Santé

    Informations forums :
    Inscription : Avril 2010
    Messages : 517
    Points : 718
    Points
    718
    Par défaut
    Bonjour,

    Merci pour ta réponse.
    Tu penses donc qu'il faudrait résoudre les 3 systèmes d'équation à 3 inconnues?

  4. #4
    Responsable Qt & Livres


    Avatar de dourouc05
    Homme Profil pro
    Ingénieur de recherche
    Inscrit en
    Août 2008
    Messages
    26 617
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Val de Marne (Île de France)

    Informations professionnelles :
    Activité : Ingénieur de recherche
    Secteur : Enseignement

    Informations forums :
    Inscription : Août 2008
    Messages : 26 617
    Points : 188 587
    Points
    188 587
    Par défaut
    C'est la solution la plus simple que j'y vois (mais neuf équations à neuf inconnues, à cause de P : il n'y a pas vraiment d'indépendance entre ses éléments, à mon avis — sans apporter de preuve, cependant).
    Vous souhaitez participer aux rubriques Qt (tutoriels, FAQ, traductions) ou HPC ? Contactez-moi par MP.

    Créer des applications graphiques en Python avec PyQt5
    Créer des applications avec Qt 5.

    Pas de question d'ordre technique par MP !

  5. #5
    Membre éclairé
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Avril 2010
    Messages
    517
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Gironde (Aquitaine)

    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : Santé

    Informations forums :
    Inscription : Avril 2010
    Messages : 517
    Points : 718
    Points
    718
    Par défaut
    Bonjour,

    J'ai trouvé une solution plus simple: l'inversion de matrice avec la matrice A et la matrice B:

    A partir de cette matrice, il n'y a pas de problème et c'est surtout plus rapide à calculer que de résoudre les 9 équations à 9 inconnues!

    Encore merci pour l'aide

  6. #6
    Responsable Qt & Livres


    Avatar de dourouc05
    Homme Profil pro
    Ingénieur de recherche
    Inscrit en
    Août 2008
    Messages
    26 617
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Val de Marne (Île de France)

    Informations professionnelles :
    Activité : Ingénieur de recherche
    Secteur : Enseignement

    Informations forums :
    Inscription : Août 2008
    Messages : 26 617
    Points : 188 587
    Points
    188 587
    Par défaut
    Citation Envoyé par darkman19320 Voir le message
    A partir de cette matrice, il n'y a pas de problème et c'est surtout plus rapide à calculer que de résoudre les 9 équations à 9 inconnues!
    Mouais… Pas sûr que tu convaincras beaucoup de gens . Un système linéaire ou une matrice inverse, d'un point de vue strictement mathématique, c'est cosmétique ; pour un adapte de l'analyse numérique, il criera très fort en voyant l'inversion . Voir, par exemple, http://www.johndcook.com/blog/2010/0...t-that-matrix/ pour les points principaux, les liens pour quelques détails (par exemple, en arithmétique en nombre à virgule flottante, l'addition n'est plus associative !). C'est surtout important pour de grandes matrices ; ici, il te suffit d'espérer avoir une matrice pas trop mal conditionnée pour que l'inversion ne pose pas de problème.
    Vous souhaitez participer aux rubriques Qt (tutoriels, FAQ, traductions) ou HPC ? Contactez-moi par MP.

    Créer des applications graphiques en Python avec PyQt5
    Créer des applications avec Qt 5.

    Pas de question d'ordre technique par MP !

  7. #7
    Membre éclairé
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Avril 2010
    Messages
    517
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Gironde (Aquitaine)

    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : Santé

    Informations forums :
    Inscription : Avril 2010
    Messages : 517
    Points : 718
    Points
    718
    Par défaut
    Merci pour le lien!

    C'est vrai que dans certains exemples que j'ai pris, je ne pouvais pas inverser la matrice. Cependant, dans le cas réel, il sera physiquement impossible qu'elle ne puisse pas s'inverser. C'est peut-être une solution de faciliter ou qui feront crier les matheux mais bon, ça fonctionne et c'est suffisemment rapide pour notre utilisation.

    Encore merci pour l'aide!

  8. #8
    Responsable Qt & Livres


    Avatar de dourouc05
    Homme Profil pro
    Ingénieur de recherche
    Inscrit en
    Août 2008
    Messages
    26 617
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Val de Marne (Île de France)

    Informations professionnelles :
    Activité : Ingénieur de recherche
    Secteur : Enseignement

    Informations forums :
    Inscription : Août 2008
    Messages : 26 617
    Points : 188 587
    Points
    188 587
    Par défaut
    Citation Envoyé par darkman19320 Voir le message
    Cependant, dans le cas réel, il sera physiquement impossible qu'elle ne puisse pas s'inverser.
    Si ta matrice n'est pas inversible, un passage par un système d'équations ne devrait pas arranger la situation. Le vrai problème de l'inversion est numérique : tu peux calculer une matrice Formule mathématique (approchée, dans une arithmétique où la précision est finie), mais la différence par rapport à la vraie inverse Formule mathématique (précision infinie) peut être grande (même si Formule mathématique, tu n'as pas forcément Formule mathématique).
    Vous souhaitez participer aux rubriques Qt (tutoriels, FAQ, traductions) ou HPC ? Contactez-moi par MP.

    Créer des applications graphiques en Python avec PyQt5
    Créer des applications avec Qt 5.

    Pas de question d'ordre technique par MP !

  9. #9
    Membre éclairé
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Avril 2010
    Messages
    517
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Gironde (Aquitaine)

    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : Santé

    Informations forums :
    Inscription : Avril 2010
    Messages : 517
    Points : 718
    Points
    718
    Par défaut
    Re bonjour tout le monde,

    Je viens de m'apercevoir que dans de nombreux cas ma solution ne fonctionne pas.

    Voici un exemple concret: soit A(2,2,0), B(2,2,1), C(3,2,4) appartenant au repère E et A'(3,-2,0) B'(3,-2,1) et C(3,-3,4) appartenant au repère F.

    On remarque ici que ces 3 points ne forment pas un repère orthogonal. De plus, les coordonnées de l'origine du repère F (OF) dans le repère E, ne sont pas en (0, 0, 0) (il existe une translation entre les 2 systèmes).

    Lorsque j'essaie de résoudre ceci:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
        |2 2 3|
    E = |2 2 2| 
        |0 1 4|
     
        |3   3  3|
    F = |-2 -2 -3|
        |0   1  4|
     
    P.E = F
    P = F.E^-1
     
      |2 2 3|    |3   3  3|
    P.|2 2 2| =  |-2 -2 -3|
      |0 1 4|    |0   1  4|
     
        |3   3  3|   |2 2 3| ^-1
    P = |-2 -2 -3| . |2 2 2|
        |0   1  4|   |0 1 4|
     
        |0 1.5 0|
    P = |1  0  0|
        |0  0  1|
     
          |0 1.5 0|   |2 2 3|    |3   3  3|
    P.E = |1  0  0| . |2 2 2| =  |-2 -2 -3| = F // Résultat attendu
          |0  0  1|   |0 1 4|    |0   1  4|
     
               |0   -1  0|   |3   3  3|    |2 2 3|
    (P^-1).F = |2/3  0  0| . |-2 -2 -2| =  |2 2 2| = E // Résultat attendu
               |0    0  1|   |0   1  4|    |0 1 4|
     
                |0   -1  0|   |0|    |0|
    (P^-1).OF = |2/3  0  0| . |0| =  |0| // Pas du tout le résultat attendu
                |0    0  1|   |0|    |0|
    Je n'arrive pas à récupérer les coordonnées du repère F dans le repère E. En gros, je n'arrive pas à calculer la translation entre ces deux repères. J'ai essayé de faire la différence entre le même point dans les deux repères différents mais cette solution ne fonctionne pas à tous les coups (par exemple s'il n'y a qu'une rotation appliquée au repère F par exemple).

    Avez-vous une idée de comment résoudre ce problème?

    Pour info, j'ai essayé de passer en coordonnées homogènes, mais je n'ai eu aucun changement.

  10. #10
    Expert éminent sénior Avatar de Flodelarab
    Homme Profil pro
    Inscrit en
    Septembre 2005
    Messages
    5 242
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Charente (Poitou Charente)

    Informations forums :
    Inscription : Septembre 2005
    Messages : 5 242
    Points : 13 457
    Points
    13 457
    Par défaut
    Bonjour

    Quelle remarque fascinante.
    • S'étonner qu'en multipliant par une matrice nulle, on trouve une matrice nulle, est nul. (voire imbécile)
    • Le vecteur nul est un vecteur nul dans tous les repères.



    Cette réponse vous apporte quelque chose ? Cliquez sur en bas à droite du message.

  11. #11
    Membre éclairé
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Avril 2010
    Messages
    517
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Gironde (Aquitaine)

    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : Santé

    Informations forums :
    Inscription : Avril 2010
    Messages : 517
    Points : 718
    Points
    718
    Par défaut
    Merci pour ce superbe commentaire tout aussi utile que mon produit matriciel avec une matrice nulle ^^

    J'ai mal dû m'exprimer. Est-ce qu'il est possible tout simplement de calculer de manière sûre une matrice de passage d'une base vers une autre en pouvant exprimer l'origine des repères?

  12. #12
    Expert éminent sénior

    Profil pro
    Inscrit en
    Janvier 2007
    Messages
    10 603
    Détails du profil
    Informations personnelles :
    Âge : 66
    Localisation : France

    Informations forums :
    Inscription : Janvier 2007
    Messages : 10 603
    Points : 17 913
    Points
    17 913
    Billets dans le blog
    2
    Par défaut
    Ben d'une part il te faut , pour les calculs, utiliser les coordonnées relatives :

    x-xc
    y-yc
    z-zc

    par rapport aux 2 centres des repères..

    Une matrice ne passera que d'un cas à l'autre.. Tu ne peux pas passer par une matrice de coordonnées directes d'un repère dans l'autre..
    "Un homme sage ne croit que la moitié de ce qu’il lit. Plus sage encore, il sait laquelle".

    Consultant indépendant.
    Architecture systèmes complexes. Programmation grosses applications critiques. Ergonomie.
    C, Fortran, XWindow/Motif, Java

    Je ne réponds pas aux MP techniques

  13. #13
    Membre éclairé
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Avril 2010
    Messages
    517
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Gironde (Aquitaine)

    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : Santé

    Informations forums :
    Inscription : Avril 2010
    Messages : 517
    Points : 718
    Points
    718
    Par défaut
    Merci pour cette réponse, mais je n'ai pas (et ne peux pas les avoir) les centres des repères (juste leur coordonnées dans leur repère respectifs d'où ma multiplication débile par une matrice nulle).

  14. #14
    Expert éminent sénior

    Profil pro
    Inscrit en
    Janvier 2007
    Messages
    10 603
    Détails du profil
    Informations personnelles :
    Âge : 66
    Localisation : France

    Informations forums :
    Inscription : Janvier 2007
    Messages : 10 603
    Points : 17 913
    Points
    17 913
    Billets dans le blog
    2
    Par défaut
    Alors le problème est insoluble de manière générale ..

    Un changement de repère (en admettant que les 2 repères soient du même type) est une combinaison d'une translation et d'une rotation..

    La rotation nécessite un centre.. Tu ne pourras pas trouver une matrice générale transformant les coordonnées de l'un en celle de l'autre sans avoir les centres...

    Alors reformule le problème auquel tu fais face et expose-le nous correctement...
    "Un homme sage ne croit que la moitié de ce qu’il lit. Plus sage encore, il sait laquelle".

    Consultant indépendant.
    Architecture systèmes complexes. Programmation grosses applications critiques. Ergonomie.
    C, Fortran, XWindow/Motif, Java

    Je ne réponds pas aux MP techniques

  15. #15
    Membre éclairé
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Avril 2010
    Messages
    517
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Gironde (Aquitaine)

    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : Santé

    Informations forums :
    Inscription : Avril 2010
    Messages : 517
    Points : 718
    Points
    718
    Par défaut
    Merci,

    Malheureusement, je n'ai pas l'information pour exprimer les coordonnées de l'origine de mon repère F dans l'autre repère E:

    Formule mathématique
    avec Formule mathématique inconnue et Formule mathématique inconnue (ça sent le roussi ^^)

  16. #16
    Expert éminent sénior

    Profil pro
    Inscrit en
    Janvier 2007
    Messages
    10 603
    Détails du profil
    Informations personnelles :
    Âge : 66
    Localisation : France

    Informations forums :
    Inscription : Janvier 2007
    Messages : 10 603
    Points : 17 913
    Points
    17 913
    Billets dans le blog
    2
    Par défaut
    Citation Envoyé par darkman19320 Voir le message
    Malheureusement, je n'ai pas l'information pour exprimer les coordonnées de l'origine de mon repère F dans l'autre repère E:
    Ce que je te demandais c'est : quel est le problème exactement ?

    • De quoi disposes-tu au départ ?
    • Que veux-tu faire / obtenir ?
    • Dans quel but ?
    "Un homme sage ne croit que la moitié de ce qu’il lit. Plus sage encore, il sait laquelle".

    Consultant indépendant.
    Architecture systèmes complexes. Programmation grosses applications critiques. Ergonomie.
    C, Fortran, XWindow/Motif, Java

    Je ne réponds pas aux MP techniques

  17. #17
    Membre éclairé
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Avril 2010
    Messages
    517
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Gironde (Aquitaine)

    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : Santé

    Informations forums :
    Inscription : Avril 2010
    Messages : 517
    Points : 718
    Points
    718
    Par défaut
    J'ai seulement 3 points (notons les A, B et C) avec des coordonnées dans 2 repères 3D orthonormés différents (notons les E et F). Autre remarque, ces 3 points ne forment pas un repère orthonormé: ils sont pris au hasard.
    Je cherche à trouver la matrice de passage pour exprimer l'ensemble des points du repère E dans le repère F (et inversement).

    Mon problème c'est que je n'ai aucun moyen d'exprimer les coordonnées de l'origine du repère E dans le repère F.

    Pour résumer, c'est un problème de passage d'un repère local vers un repère global et inversement.

Discussions similaires

  1. [MATH] Matrice de changement de repère.
    Par Mr Meuble dans le forum Moteurs 3D
    Réponses: 6
    Dernier message: 27/11/2008, 11h05
  2. Changement de repère
    Par Virgile le chat dans le forum 2D
    Réponses: 4
    Dernier message: 16/06/2007, 10h26
  3. Changement de repère
    Par Bloodista dans le forum OpenGL
    Réponses: 3
    Dernier message: 23/04/2007, 23h23
  4. URGENT : Zoom et changement de repère
    Par poca10 dans le forum MFC
    Réponses: 5
    Dernier message: 28/05/2002, 13h32

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo