- 一个像素从左下角开始到右上角
- 范围:[0,0]to[width−1,height−1]
- 像素(x,y)的中心点为(x+0.5,y+0.5)
透视除法#
将裁剪空间的坐标值全部除以w:
xyzw⟹x/wy/wz/w1这样才能拿出x,y,z项的三维坐标接着使用
视口变换#
将空间从 [−1,1]2 变换为屏幕空间 [0,width]×[0,height]
Mviewport=width/20000height/2000010width/2height/201
三角形#
判断方法#
设三角形 ABC 三条边向量分别为 AB,BC,CA ,设顶点P到三个顶点的向量为AP,BP,CP
AB×AP&BC×BP&CA×CP⎩⎨⎧>0,=0,<0,insideedgeoutside采样操作#
image[x][y]=inside(tri,x+0.5,y+0.5);
- 可以使用包围盒来减少不必要的判断,比如使用AABB包围盒,只需要判断包围盒内的像素点是否在三角形内就可以
- 采样会带来锯齿问题(走样)
需要抗锯齿