【问题标题】:Find Affine transformation matrix between two Shapes(SVG Paths)查找两个形状(SVG 路径)之间的仿射变换矩阵
【发布时间】:2015-11-08 02:57:04
【问题描述】:

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

有什么合适的数学方法可用吗?

【问题讨论】:

  • 我假设您首先通过基于不同点数和点身份的拒绝来排除不可能? (开-关-开-开!=开-关-开)
  • 抱歉,评论延迟。是的,这是个好主意。

标签: math svg geometry bezier


【解决方案1】:

您可以在任何 非共线点 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,需要两边乘以P矩阵的逆

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

A * E = P' * P-1

A = P' * P-1

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

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

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2018-08-31
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多