一、光栅化算法
1. 线段的扫描转换算法
DDA算法(基本算法)
for(x=x1; x<=x2; x++) {
y+=m;
write_pixel(x, round(y),line_color);
}
算法特点:浮点加法运算和舍入运算Bresenham算法–经典算法
算法优点:
对每个x值,只需要进行整数加法以及符号判断
可以在图形芯片上用单个指令实现
3.中点法
决策函数:F(x,y)= ax-by+c
2.多边形填充算法
- 奇偶填充(扫描线算法)
- 种子填充
- 扫描线填充
二、裁剪算法
1.Cohen-Sutherland算法–经典算法
想法:尽可能不经过求交就消除许多情形
从确定裁剪窗口边界的四条直线开始
定义编码方式
对于每个端点,定义一个四位编码b[0]b[1]b[2]b[3] (这里数字表示下标),分别表示在裁剪窗口的上下右左四个方位。
2.Sutherland-Hodgeman算法(逐边裁剪法)
三、碰撞检测算法
四、隐藏面消除算法
1.对象空间算法
- 画家算法
- 深度排序
- 背向面剔除
2.图像空间算法
- Z缓冲区算法