查找两个形状之间的仿射变换矩阵(SVG 路径)
Find Affine transformation matrix between two Shapes(SVG Paths)
我有两个形状,每个形状都定义为一个 SVG 路径。我想确定形状 A 是否是形状 B 的仿射变换以及 compute/find 仿射变换矩阵。
我目前的方法是计算曲线外点和曲线上点之间的连续角度,以确定它们是否是变换后的形状。这适用于平移、缩放、旋转操作。但不适用于剪切形状。
有什么合适的数学方法可用吗?
您可以在 非共线 点 P1、P2、P3 及其翻译的双胞胎 P1'、P2'、P3'[=12] 的任何三元组之间找到仿射变换矩阵=]
A * P = P'
|x1 x2 x3| |x1' x2' x3'|
A *|y1 y2 y3| = |y1' y2' y3'|
|1 1 1 | |1 1 1 |
计算A需要两边乘以P矩阵的逆
A * P * P-1 = P' * P-1
A * E = P' * P-1
A = P' * P-1
然后检查相同的 A 是否适用于其他三元组点(对于随机子集或所有点,如果可能的话)
有sophisticated methods可以评估整个点云的仿射变换,但它们更复杂。
我有两个形状,每个形状都定义为一个 SVG 路径。我想确定形状 A 是否是形状 B 的仿射变换以及 compute/find 仿射变换矩阵。 我目前的方法是计算曲线外点和曲线上点之间的连续角度,以确定它们是否是变换后的形状。这适用于平移、缩放、旋转操作。但不适用于剪切形状。
有什么合适的数学方法可用吗?
您可以在 非共线 点 P1、P2、P3 及其翻译的双胞胎 P1'、P2'、P3'[=12] 的任何三元组之间找到仿射变换矩阵=]
A * P = P'
|x1 x2 x3| |x1' x2' x3'|
A *|y1 y2 y3| = |y1' y2' y3'|
|1 1 1 | |1 1 1 |
计算A需要两边乘以P矩阵的逆
A * P * P-1 = P' * P-1
A * E = P' * P-1
A = P' * P-1
然后检查相同的 A 是否适用于其他三元组点(对于随机子集或所有点,如果可能的话)
有sophisticated methods可以评估整个点云的仿射变换,但它们更复杂。