标准立方体到屏幕
什么是屏幕?
屏幕由一组像素组成, 像素是单色的小正方形, 如下图所示.
(像素英文叫做Pixel, 是picture element的简称)
我们可以用(x,y)来定位屏幕上的某一个像素, 其中x、y都是整数, 假设屏幕宽度有width个像素, 高度有height个像素.
- 那么像素(x,y)的中心点为(x+0.5, y+0.5)
将标准立方体映射到屏幕, 其实就是进行一个缩放:
三角形-基本图元
在计算机图像学中, 复杂的图像或几何体都是有三角形组成的, 如下图所示:
为什么是三角形?
- 足够简单
- 保证是平面的
- 三角形有很好的方式来进行插值(重心插值)
三角形如何在屏幕中显示
一种简单的方式: 像素的中心点如果三角形内就上色.
光栅化的定义
所谓光栅化, 其实是这么个过程, 决定哪些像素需要进行着色.
遍历屏幕上的所有像素, 如果中心点在三角内, 则标记为1, 否则标记为0. (inside函数用来确定是否在三角形内, 返回1或0) (image是个二维数组, 用来存储这个信息)
如何判断一点是在三角形内?
光栅化时真的需要遍历屏幕上的所有像素吗?
当然不需要, 根据三角形的三个顶点p1,p2,p3, 就可以确定一个边界, 我们只需要遍历这个边界里的像素就可以了.
还可以再快一点, 如下图所示: