点阵图形光栅化
将参数描述的图形转化为点阵的算法,评价指标有:精度、时间复杂度、空间复杂度。对实时性要求高的实时渲染场景比如游戏动画,应该需要更快的转化为点阵。类似制作动画片的离线渲染就对精度要求更高。
线条图形转化要求
- 线段端点准确
- 线段亮度均匀
- 算法速度快
直线光栅化算法
数值微分发(DDA)
DDA(Digital Differential Analyzer)基本思想使用直线的微分基本方程,从起始点向结束点前进,利用微分方程求出递推式,保证每次求出的点和前一个点相邻。
{
xi+1¯¯¯¯¯¯yi+1¯¯¯¯¯¯=xi¯¯¯=yi¯¯¯ororxi+1¯¯¯¯¯¯yi+1¯¯¯¯¯¯=xi¯¯¯+1=yi¯¯¯+1
直线差分方程
kxi+1yi+1=dydx=xi+δx=yi+δy(1)(2)(3)
给定线段两点 p1 , p2 ,选取长边的步长作为一个像素,根据斜率计算另一边的步长。即:如果 |p1.x−p2.x|>=|p1.y−p2.y| ,则选取x方向为单位步长方向,否则选取y方向。
{
δx=1δx=1/kδy=k0<|k|≤1δy=11<|k|
直线光栅化效果:
Bresenham直线算法
Wikipedia:Bresenham line algorithm
思想还是DDA,简化运算量。
当 0<k<1 时, xi¯¯¯