Oto*_*ers 4 geometry coordinate
我有两个三角形,可以是任何尺寸.问题是,我如何将坐标从一个三角形转移到另一个三角形?我知道坐标系中的三角形位置,是的,它们都在一个系统中.
基本上,我有点在triangle1,我需要在triangle2中传输它.
阅读一些帖子,我发现我可以使用仿射变换矩阵计算,但我没有看到如何用仿射变换矩阵来解决这个问题.
感谢您的任何帮助.
让我们有未知的仿射变换矩阵
| a c e |
M =| b d f |
| 0 0 1 |
Run Code Online (Sandbox Code Playgroud)
第一个三角形顶点是(xa1,ya1),(xa2,ya2),(xa3,ya3),第二个三角形顶点有坐标(xb1,yb1),(xb2,yb2),(xb3,yb3)
然后将第一个三角形转换为第二个三角形的仿射变换是
M * A = B
Run Code Online (Sandbox Code Playgroud)
哪里
| xa1 xa2 xa3 |
A =| ya1 ya2 ya3 |
| 1 1 1 |
| xb1 xb2 xb3 |
B =| yb1 yb2 yb3 |
| 1 1 1 |
Run Code Online (Sandbox Code Playgroud)
为了找到未知的M,我们可以将表达式的两边乘以A矩阵的逆
M * A * Inv(A) = B * Inv(A)
M = B * Inv(A)
Run Code Online (Sandbox Code Playgroud)
A的反转相当简单(由Maple计算,可能包含由于我的拼写错误导致的错误):
| (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) |
Run Code Online (Sandbox Code Playgroud)
决定性价值在哪里
Det = xa2*ya3-xa3*ya2-ya1*xa2+ya1*xa3+xa1*ya2-xa1*ya3
Run Code Online (Sandbox Code Playgroud)
因此,您可以找到所需转换的仿射矩阵并将其应用于坐标
| 归档时间: |
|
| 查看次数: |
1660 次 |
| 最近记录: |