插值还没有系统的学过,最近在实现BlackWalnut3D的纹理映射时,才慢慢发现3D中的插值和我们数学上的插值还是有点不同的。
个人认为,插值可以和向量,矩阵一起称为计算机图形学中最最基本的数学基础。
在构造物体时,可以只设置几个参考点,使用插值完成贝塞尔曲线的逼近。在进行裁剪时,为了获得规范的,可以方便进行裁剪的裁剪立方体CVV,将透视和插值融合实现了透视矩阵,同时,在具体的裁剪过程中,使用插值获得各种裁剪后的坐标。在光栅化的阶段,使用插值完成将一个平面离散到屏幕像素上,并且利用插值完成正确的纹理透视,使效果看起来更棒。
可以发现,在pipeline的整个阶段都可能用到插值。其重要性并不亚于向量和矩阵。那么,就先简单的介绍一下插值,以后系统的学习过后,再系统的写一写。
首先,插值只适用于线性关系中。对于非线性关系,插值并不适用。
其次,计算机中的插值,和数学中插值的基本含义一样,具体用法上,多数使用的是比例关系。
数学上,线性关系表示为:y = ax+b,其中a,b为实数,x,y可以为向量或者实数。也就是说,知道a,b后,每一个确定的x,有一个确定的y和其对应。
而再计算机中,我们通常使用的是其比例关系。设y = ax+b , 如y从y0开始,到y0和y3之间的一个值y2,那么x也就从x0开始,到x0和x3之间的一个值x2,这中情况下,如果要求x2的值,有
x2 = (x3-x0)*(y2-y0)/(y3 - y0) + x0 。不用具体求出a和b的值。
在下面这篇文章中,使用的就是上面的插值方式:
http://blog.csdn.net/popy007/article/details/5570803
由上面这篇文章可知,只要能知道两个量之间关系是线性关系即可,不用计算a和b的具体值。