在计算机图像学中使用视角field-of-veiw(fovY)和长宽(aspect ratio)比来定义视口
viewport在知道视角fovY之后我们可以得到屏幕在竖直方向上的半径t
viewport-tivialt=tan2fovY∗∣n∣
视口的上下分别为
viewT=tviewB=−t
视口的水平方向上的半径r可以利用长宽比得到
r=aspect∗tviewR=rviewL=−r
屏幕的最小单位为像素,每个像素由三元色(rgb)和明亮程度组成
screen-space在有些图像api中将坐标系的原点定在屏幕的左上角并反转y轴的方向
- 像素的坐标为(x,y)
- 像素取值范围为(0,0)−>(width−1,height−1)
- 像素的中心为(x+0.5,y+0.5)
- 屏幕的空间为(0,0)−>(width,height)
在投影变换中我们将模型压缩成为了一个[−1,1]3的标准矩阵,在这里我们暂时不对z轴进行处理,先将标准矩阵的[−1,1]2映射到[0,width]×[0,height]上,并且将原点平移到屏幕的左下角
Mviewport=2width00002height0000102width2height01
性质:
- 三角型色边最少的三角形
- 任何其他不同的多边形都能被分割成三角形
- 三角型的三个点一定是在同一个平面的
给定一个函数,去判断该函数内的x,y与三角形三个顶点间向量的叉积的方向是否一致,就可以求出改点,就可以得出该点是否在三角型的内部
这里的n代指三角形的顶点
n>0,n<=3,当 n=3 时 n+1=0
p=(xyz)t=t1t2t3tn=(txntyntzn)
求出三角形顶点到当前坐标之间的向量vpn与三角形顶点之间的向量vtn
vpn=p−tn=x−txny−tynz−tznvtn=tn+1−tn=txn+1−txntyn+1−tyntzn+1−tzn
求出向量vtn与向量vpn的叉积
cn=vtn×vpn=0tyn+1−tyn−(tyn+1−tyn)−(tzn+1−tzn)0txn+1−txntyn+1−tyn−(txn+1−txn)0x−txny−tynz−tzn
计算z轴的值
zn=czn=(txn+1−txn)(y−tyn)−(tyn+1−tyn)(x−txn)
如果z轴的方向同为正或负则点在三角形内
(z0 > 0 && z1 > 0 && z2 > 0)||( z0 < 0 && z1 < 0 && z2 < 0);
在计算机图形学中我们通常以一个像素的中心点,去判断
我们使用一个连续的函数去遍历屏幕上的每一个点,对点进行判断,如果在三角形内我们就将它改变颜色并渲染到屏幕上,这样我们就完成了一个基本的三角形的图形光栅化