计算已知色点之间的内部颜色值(双线性插值?)

时间:2012-03-24 17:11:39

标签: math geometry interpolation graphics2d linear-interpolation

这似乎是一个非常基本的数学/图形问题,但由于某种原因,我似乎无法绕过它。

我得到的是四个线段,概述了一个四边形。每个线段上的每个顶点都具有已知的颜色值。为简单起见,我们假设每个线段有100个顶点(也就是100个已知颜色点)。示例可能如下所示:

我需要做的是,根据轮廓上的点的颜色,渲染每个内部像素着色的实心四边形。最明显的方法(不指定每100 * 100色点的顶点)将首先生成带有每个插值颜色值的100x100位图,然后将其作为纹理应用于四边形。我只是很难弄清楚如何计算这些内部颜色值。

似乎这是双线性插值的问题,但是因为我不是想在四个已知角点内找到值,而是在已知色点的“+”的交点处,我一直感到困惑。我的数学有点生疏:P

作为一个例子,我如何计算四边形中间点(50,50)处的点的颜色值 - 已知颜色点为(0,50),(50,0),( 50,100)和(100,50)?这甚至是双线性插值,还是完全不同的呢?

提前致谢!

1 个答案:

答案 0 :(得分:1)

这看起来像带有boundary value problem Dirichet conditions (即,在边界处指定了值)。你无法使用双线性插值解决这个问题,因为它通常会变成(如果你有超过四个输入点),边缘像素附近的像素将不会有与其直接邻居连续的颜色。

你需要解决的主要问题是一个相当平滑的方程式,并且总是在边界处给出一个接近它的邻居的颜色值,并且有多个选项。显而易见的是Laplace's equation,它基本上就像将橡皮布固定在边界处每个颜色通道的值,然后让它放松。解决拉普拉斯并不是一件容易的事,因为你需要为每一组新的边界条件模拟橡皮布,但它很常见,所以你几乎可以用任何语言寻找求解器或例子。