Transfer coordinates from one triangle to another triangle

前端 未结 1 1328
执念已碎
执念已碎 2020-12-06 14:14

I have two triangles , which can be in any sizes. The problem is that, how I can transfer coordinates from one triangle to another? I know both of triangle position in coord

相关标签:
1条回答
  • 2020-12-06 14:34

    Let's you have unknown affine transformation matrix

       | a c e |
    M =| b d f |
       | 0 0 1 |
    

    first triangle vertices are (xa1, ya1), (xa2, ya2), (xa3, ya3), and second triangle vertices have coordinates (xb1, yb1), (xb2, yb2), (xb3, yb3)

    Then affine transformation that transforms first triangle to second one is

    M * A = B
    

    where

       | xa1 xa2 xa3 |
    A =| ya1 ya2 ya3 |
       |  1   1   1  |
    
       | xb1 xb2 xb3 |
    B =| yb1 yb2 yb3 |
       |  1   1   1  |
    

    To find unknown M, we can multiply both sides of the expression by inverse of A matrix

    M * A * Inv(A) = B * Inv(A)
    M = B * Inv(A)
    

    Inversion of A is rather simple (calculated by Maple, may contain errors due to my typos):

    | (ya2-ya3)    -(xa2-xa3)    (xa2*ya3-xa3*ya2)  |
    | -(-ya3+ya1)  (-xa3+xa1)    -(xa1*ya3-ya1*xa3) | * 1/Det
    | (-ya2+ya1)   -(-xa2+xa1)   (xa1*ya2-ya1*xa2)  |
    

    where determinant value is

    Det = xa2*ya3-xa3*ya2-ya1*xa2+ya1*xa3+xa1*ya2-xa1*ya3
    

    So you can find affine matrix for needed transformation and apply it to coordinates

    0 讨论(0)
提交回复
热议问题