2015-11-08 109 views
1

我有两个形状,每个形状定义为单个SVG路径。我想要找出形状A是否是形状B的仿射变换,并计算/找到仿射变换矩阵。 我目前的方法计算关闭曲线和曲线点之间的连续角度,以查找它们是否为变形形状。这适用于翻译,缩放,旋转操作。但对剪切形状不起作用。查找两个形状之间的仿射变换矩阵(SVG路径)

有没有适当的数学方法?

+0

我假设你首先通过拒绝基于不同的点数和点身份来排除不可能性? (on-off-on-on!=开关关) –

+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 | 

来计算,它需要通过P矩阵

A的逆相乘两个sudes * P * P -1 = P '* P -1

A * E = P' * P -1

A = P” * P -1

然后检查相同甲适用于点的其他的三联体(用于随机子集或所有点,如果可能的话)

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