将几何图形绘制到屏幕上的过程叫做光栅化,我们对屏幕的定义如下
**光栅化(Rasterization)**指的是将物体绘制到屏幕上。**像素(Pixel)**是具有统一颜色的小方块,是由不同颜色组合而成的(例如 RGB)。
我们认为屏幕左下角为原点,向右为 x 轴,向上为 y 轴。建立平面直角坐标系。屏幕空间满足以下几点
对于一个 3 维图形我们可以用三角形去表示一个一个小面。使用三角形的主要原因是:
对于一个三角形,如何映射在像素空间上问题,可以转换成判断一个像素和三角形的位置关系。最简
单的方法就是进行离散化(Sampling)。采样就是连续函数的离散化过程。代码表示如下
for ( int x = 0; x < max ; ++ x)
output [x ]= f(x);
我们对于给定三角形,判断像素中心是否在三角形内部。如果在,那么这个点为 1,否则为 0
判断代码就可以写为:
for ( int x = 0; x < xmax ; ++ x)
for ( int y = 0; y < ymax ; ++ y)
image [x ][ y] = inside (tri , x +0.5 , y +0.5) ;
对于像素是否在三角形内部的判断,可以使用叉积。具体可以在叉积的讲解部分查看。
对于在边界上的三角形点,可要可不要自己定。为了能够更快速的遍历
像素点,我们可以用以下方法: