Est-ce que quelqu'un connaît des algorithmes standard pour déterminer une matrice de transformation affine basée sur un ensemble de points connus dans deux systèmes de coordonnées?Algorithme de transformation affine
Répondre
Les transformations affines sont données par des matrices 2x3. Nous effectuons une transformation affine M en prenant notre entrée 2D (xy), en la cognant sur un vecteur 3D (xy 1), puis en multipliant (à gauche) par M.
Donc si nous avons trois points (x1 y1) (x2 y2) (x3 y3) mappage (u1 v1) (u2 v2) (u3 v3) nous avons
[x1 x2 x3] [u1 u2 u3]
M [y1 y2 y3] = [v1 v2 v3].
[ 1 1 1]
Vous pouvez obtenir M simplement en multipliant à droite par l'inverse de
[x1 x2 x3]
[y1 y2 y3]
[ 1 1 1].
Une matrice 2x3 multipliée à droite par une matrice 3x3 nous donne le 2x3 que nous voulons. (Vous n'avez pas vraiment besoin de l'inverse complet, mais si l'inverse matriciel est disponible, il est facile à utiliser.)
Facilement adapté aux autres dimensions. Si vous avez plus de 3 points, vous pouvez choisir la méthode des moindres carrés. Vous devrez le demander à nouveau, mais c'est un peu plus difficile.
Qu'en est-il de la traduction? – jeff
La dernière colonne de M donne la traduction. Vous pouvez lire M comme une carte linéaire (donnée par la matrice 2x2 sur la gauche) suivie de la traduction par la dernière colonne. Mais vous n'avez pas à le considérer comme deux transformations séparées. Pour transformer un point 2D, vous devez ajouter un 1 pour en faire un point 3D, puis multiplier par M. Le résultat est un vecteur 2D avec des parties linéaires et de translation appliquées en une fois. – sigfpe
oh, d'accord. Merci ! – jeff
- 1. Inverser une transformation affine - comment mettre à jour les coordonnées du centre?
- 2. BitmapData - transformation triangulaire
- 3. transformation de chaîne simple?
- 4. url transformation de, python
- 5. Matrice de transformation C#
- 6. XML chaîne de transformation
- 7. Transformation de carrousel jQuery
- 8. XSLT doute de transformation
- 9. Transformation de GdkPoint
- 10. Espacement de transformation XSL
- 11. SQLite Transformation de caractères
- 12. Transformation bilinéaire
- 13. Transformation de matrice de toile
- 14. Déterminer la matrice de transformation
- 15. dojo.gfx transformation de la matrice
- 16. Transformation de gros fichiers XML
- 17. C++ Transformation de coordonnées OpenGL
- 18. Transformation de vecteur avec matrice
- 19. Transformation de XML avec ant
- 20. Algorithme de placement d'images multiples - Algorithme de collage
- 21. Test d'une transformation XQuery
- 22. Générique XSLT Transformation
- 23. Web.Config Transformation dans VS2010
- 24. Transformation simple avec Linq
- 25. Transformation d'image Java
- 26. Silverlight Image Positionnement/Transformation
- 27. Liste d'affichage et transformation
- 28. VS 2010 transformation web.config
- 29. Transformation Windows vers Mac
- 30. XSLT: transformation délicate, suggestions?
Si je me souviens de mes jours de collège, ne devriez-vous pas être capable de le faire en mettant en place un ensemble d'équations et en résolvant la transformation? Au fait, est-ce votre devoir? – WhirlWind
N'est-ce pas une question pour http://mathoverflow.net? – BalusC
@WhirlWind Non ce n'est pas mon devoir. J'ai moi-même trouvé une solution, mais il semble un peu "hacky" et ne semble pas très bien gérer certains cas. J'ai cherché un algorithme standard, mais il a échoué jusqu'à présent. Je me demandais si quelqu'un en connaissait un. @BalusC Est-ce? Dois-je demander à la place? Désolé :) Je suis un peu nouveau ici. –