计算机图形学入门III
Rasterization 1 (Triangles)
一、概念
- 两个重要参数
- Vertical Field of View(fovY) 垂直视域(垂直可视角度)
- Aspect ratio 宽高比(横纵比)
- 在图形学中我们将屏幕(screen)这一概念抽象为一个二维数组(array),数组中的每一个元素定义为一个像素(pixel)
- 光栅(Raster)实际上来源于德语,含义还是屏幕
光栅化(Rasterize)就可以理解为在屏幕上绘图
二、映射到屏幕
- 视口变换
- 平移操作重新定义原点
- 缩放操作将$2 \times 2$的空间拉伸至$width \times height$
$$
M_{viewport} =
\begin{pmatrix}
\frac{width}{2} & 0 & 0 & \frac{width}{2}\\
0 & \frac{height}{2} & 0 & \frac{height}{2}\\
0 & 0 & 1 & 0\\
0 & 0 & 0 & 1\\
\end{pmatrix}
$$
- 屏幕发展史
——>推荐一个屏幕相关的科普视频
三、三角形光栅化
- 最简单的一种方法:采样(Sampling)
核心思想:离散化 - 举一栗子
$$
inside(T,x,y)=
\begin{cases}
1, & \text{point(x,y) in T}\\
0, & \text{otherwise}\\
\end{cases}
$$
for(int x = 0; x < xmax; ++x)
for(int y = 0; y < ymax; ++y)
image[x][y] = inside(T, x+0.5, y+0.5);
- 具体函数运用到之前提到的向量叉积的方法判断一点是否在三角形内(刚好落在三角形边上的点看情况处理)
(下接 计算机图形学IV)
计算机图形学入门III
https://baifabaiquan.cn/2021/01/24/计算机图形学入门III/