[目录] 不存在 [原文截取] 基本图形的生成实验 ————直线画线算法 数学上,理想的直线是由无数个点构成的集合,没有宽度。计算机绘制直线是在显示器所给定的有限个像素组成的矩阵中,确定最佳逼近该直线的一组像素,并且按扫描线顺序,对这些像素进行写操作,实现显示器绘制直线,即通常所说的直线的扫描转换,或称直线光栅化。 由于一图形中可能包含成千上万条直线,所以要求绘制直线的算法应尽可能地快。本节介绍一个像素宽直线的常用算法:数值微分法(DDA)、中点画线法、Bresenham 算法。 1.1.1 DDA(数值微分)算法 DDA算法原理: 如图1-1所示,已知过端点 的直线段 ;直线斜率为 ,从 的左端点 开始,向 右端点步进画线,步长=1(个像素),计算相应的 坐标 ;取像素点?[ , round(y)]?作为当前点的坐标。计算 ,当 ,即当x每递增1,y递增k(即直线斜率)。 注意:上述分析的算法仅适用于k(1的情形。在这种情况下,x每增加1, y最多增加1。当 时,必须把x,y地位互换,y每增加1,x相应增加1/k(请参阅后面的Visual C++程序)。 1.1.2 生成直线的中点画线法 中点画线法的基本原理如图1..... |
[计算机图形学] 基本图形的生成实验
查看评论
已有0位网友发表了看法