如何在JS中生成数学变换,给出4个初始点和4个最终点

时间:2017-12-18 14:24:11

标签: javascript node.js math transform

我试图弄清楚如何为给定的源和目的地生成一个矩形多边形坐标集所需的变换。

我在节点使用中这样做,并且我很舒服地使用图像处理库,我只是无法找到使用我所拥有的信息生成变换的数学。

diagram

1 个答案:

答案 0 :(得分:2)

应用透视变换矩阵后,您有源坐标和目标坐标。该矩阵包含8个独立系数。源点和目标点形成8对相应的坐标(x1 (src) =>x1'(dst)等等。

Paul Heckbert的This article展示了理论 - 如何构建八个线性方程组来计算透视变换矩阵的系数。

Antigrain library包含此问题解决方案的C ++实现(在文件agg_trans_perspective.h中)。我确信世界上确实存在适当的JS实现。

解决了eq。系统你有系数A..H,可以找到任何需要的点(x,y)=>(x',y')的转换:

x' = (A * x + B * y + C) / (G * x + H * y + 1.0)
y' = (D * x + E * y + F) / (G * x + H * y + 1.0)