我正在写一个双线性插值方法。
该方法可以通过解方程A*x = b来抽象,A是下面的4x4矩阵:
1 x1 y1 x1*y1
1 x2 y2 x2*y2
1 x3 y3 x3*y3
1 x4 y4 x4*y4
这里,(x1, y1), (x2, y2), (x3, y3) 和 (x4, y4) 是包含 dst 插值点的四个点。
我的问题是当 det(A) = 0(then x! = A-1*b) 时,四边形是什么样的?
我正在写一个双线性插值方法。
该方法可以通过解方程A*x = b来抽象,A是下面的4x4矩阵:
1 x1 y1 x1*y1
1 x2 y2 x2*y2
1 x3 y3 x3*y3
1 x4 y4 x4*y4
这里,(x1, y1), (x2, y2), (x3, y3) 和 (x4, y4) 是包含 dst 插值点的四个点。
我的问题是当 det(A) = 0(then x! = A-1*b) 时,四边形是什么样的?
当行或列之一可以表示为其他行或列的线性组合时,行列式变为 0。使用列,对于四个点中的每一个点,该等式必须对某些常数 a、b、c 成立:
a*1 + b*x + c*y + xy = 0
这是具有平行于轴的渐近线的双曲线方程,因此当且仅当四个点落在同一双曲线上时,行列式为零。
例如,如果您选择矩形 (-2, -1), (-1, -2), (1, 2), (2, 1) 行列式将为零,因为这些点落在由 t 定义的双曲线上→ (t, 2/t)。
另一种看待它的方式:您可以自由选择任何 3 个点。这三个点定义了一条独特的双曲线。当且仅当您从该双曲线中选择第四个点时,行列式为 0。
上面 Joni 的回答是完全正确的,但这是您可能喜欢的物理解释:
将正方形想象成由以下四个点定义的良好四边形:1 = (0,0)、2 = (1,0)、3 = (1, 1) 和 4 = (0, 1)。
如果您通过锚定点 1 和 2 开始倾斜它,但将点 3 向右拉,使边保持相同的长度,但 x 轴与点 2 和 3 之间的线段之间的角度从 90 度改变度到 180 度并且 x 轴与点 1 和 4 之间的线段之间的角度从 90 度变为 0,行列式将随着角度的增加而接近零。当您有点 1 = (0,0)、2 = (1, 0)、3 = (2,0) 和 4 = (1,0) 时,四边形将折叠为线段,行列式将是零。
你可以用你的矩阵运行这个实验,看看我是否正确。