2015-11-08 50 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來評估整個點雲的仿射變換,但它們更復雜。