将坐标从一个三角形转移到另一个三角形 [英] Transfer coordinates from one triangle to another triangle
问题描述
我有两个三角形,可以是任意大小.问题是,我如何将坐标从一个三角形转移到另一个三角形?我知道坐标系中的三角形位置,是的,它们都在一个系统中.
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 coordinate system and yes, they both are in one system.
基本上,我在三角形 1 中有点,我需要在三角形 2 中转移它.
Basically, i have point in triangle1 and I need to transfer it in triangle2.
看了一些帖子,我发现我可以使用仿射变换矩阵进行计算,但是我不明白如何使用仿射变换矩阵来解决这个问题.
Reading some posts, I found out that I could be calculated using affine transformation matrix, but I didn't undestand how to solve this with affine transformation matrix.
感谢您的帮助.
推荐答案
让你拥有未知的仿射变换矩阵
Let you have unknown affine transformation matrix
| a c e |
M =| b d f |
| 0 0 1 |
第一个三角形顶点是(xa1, ya1), (xa2, ya2), (xa3, ya3)
,第二个三角形顶点坐标是(xb1, yb1), (xb2, yb2), (xb3, yb3)
.
The first triangle vertices are (xa1, ya1), (xa2, ya2), (xa3, ya3)
, and the second triangle vertices have coordinates (xb1, yb1), (xb2, yb2), (xb3, yb3)
.
那么将第一个三角形顶点变换到第二个顶点的仿射变换M是:
Then affine transformation M that transforms the first triangle vertices to the second one vertices is:
M * A = B
在哪里
| xa1 xa2 xa3 |
A =| ya1 ya2 ya3 |
| 1 1 1 |
| xb1 xb2 xb3 |
B =| yb1 yb2 yb3 |
| 1 1 1 |
要找到未知的M,我们可以将表达式两边乘以A矩阵的逆
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)
A的反转比较简单(由Maple计算,可能由于我的拼写错误而包含错误):
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) |
决定值在哪里
Det = xa2*ya3-xa3*ya2-ya1*xa2+ya1*xa3+xa1*ya2-xa1*ya3
因此您可以找到所需变换的仿射矩阵并将其应用于坐标(乘以 M 和 (x,y,1)
列矩阵)
So you can find affine matrix for needed transformation and apply it to coordinates (multiply M and (x,y,1)
column matrix)
这篇关于将坐标从一个三角形转移到另一个三角形的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!