在两个形状(SVG路径)之间查找仿射变换矩阵

时间:2015-11-08 02:57:04

标签: math svg geometry bezier

我有两个形状,每个形状定义为一个SVG路径。我想找出Shape A是否是形状B的仿射变换并且还计算/找到仿射变换矩阵。 我当前的方法计算off曲线和曲线点之间的连续角度,以查找它们是否为变换形状。这适用于平移,缩放,旋转操作。但是对剪切的形状不起作用。

是否有适当的数学方法?

1 个答案:

答案 0 :(得分:2)

你可以找到非共线点P1,P2,P3和它们翻译的双胞胎P1',P2',P3'

A * P = P'

   |x1  x2  x3|    |x1' x2' x3'|
A *|y1  y2  y3| =  |y1' y2' y3'|  
   |1   1   1 |    |1   1    1 |

要计算A,需要将两个sudes乘以P矩阵的倒数

A * P * P -1 = P' * P -1

A * E = P' * P -1

A = P' * P -1

然后检查相同的A是否适用于其他三元组点(对于随机子集或所有点,如果可能的话)

sophisticated methods评估整个点云的仿射变换,但它们更复杂。