概述
目前直线渲染算法主要分为五种:
- 朴素算法
- DDA(Digital Differential Analyzer)算法
- Bresenham算法
- Xiaolin Wu算法
- Gupta-Sproull算法
朴素算法
直接根据微分方程计算,源代码如下:
//plot (x1,y1) to (x2,y2)
//x1,y1,x2,y2 是整型
double dx=x2-x1; //由于要做乘除法,所以使用double型
double dy=y2-y1;
double k=dy/dx;
for(int x=x1;x<=x2;x++) //逐像素
{
y=k*x+x1;
drawPixel(x,round(y))
}
如下图所示:直线渲染像素点为蓝色。当k绝对值小于1时(左图),较为正常,但当k的绝对值大于1时(右图),会造成像素点过于稀疏(左侧)。此时,交换x,y即可(右侧)。