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

标签 math svg geometry bezier

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

是否有合适的数学方法可用?

最佳答案

您可以找到非共线 点 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评估整个点云的仿射变换,但它们更复杂。

关于math - 查找两个形状之间的仿射变换矩阵(SVG 路径),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33590244/

相关文章:

svg - 如何在D3.js的强制布局中实现 "flying Arcs"作为链接

coding-style - SVG:使用属性或 CSS 来设置样式?

css - 带有 SVG 图像数据 URI 的背景图像中的 SCSS 变量

math - 平面上的 3d 正交投影

c# - 编写 .x 文件

c++ - 在 C++ 中使用 y = mx + b 公式移动圆

c# - 获得离直线最近的点

algorithm - 使用迭代法求复杂度 T(n) = 4T(n/2) + (n^2)*logn

python - 点 [4, 7] 与以 [2, 9] 为圆心、半径为 2 的圆上最近的点之间的距离是多少?提供至少 4 位数字的准确度

C++数学函数问题(Linux下)