计算机图形学(二)划线算法

简介:

一、光栅系统绘制图形的原理

1、光栅系统的图元都是由像素点组成的

2、像素点的坐标值都是整数,是离散的,因此表示图形时会出现锯齿现象 

3、要绘制图形元素,就必须计算出组成图形元素的所有像素点的坐标值 

4、好的算法(计算所有像素的坐标值)不但速度快,还要尽可能的减小锯齿的影响


 

二、划线算法

1、要求:给出线段的两个端点的坐标值,绘制出直线 

2、可以计算出斜率 m 和节距 b


三、DDA算法

 

1、如果斜率 m 小于 1 ,则水平方向每增加一个单位,垂直方向就增加 m 个单位,即

yk+1 =yk + m

计算结果要四舍五入,这样就可快速计算出线段上所有像素点的坐标值

 

2、如果斜率 m 大于 1,则垂直方向每增加一个单位,水平方向就增加 1/m 个单位,即

xk+1 = xk + 1/m 

计算结果要四舍五入

 

3、区分 m 大于或者小于 1 是为了在变化率较小的方向上计算,可以减少锯齿

 

4、DDA算法的特点

充分利用了光栅的特性

比直接利用直线公式计算速度快,

累加过程中涉及到浮点运算,仍然耗时,且有误差

 

三、Bresenham  划线算法

 

1、基本思想

划线过程中,一个方向上的坐标总是加1,另一方向上的坐标要么不变、要么加1,能不能通过某种方法做出判断,利用上述特性,从而避免浮点运算 

 

如上图所示:起始点的坐标为(xi,yi),则下一点的坐标应该为(xi+1,y),这一点叫理论计算点

由于光栅系统的坐标是离散的,理论计算点不存在,所以我们只能从理论计算点的上面或者下面,即(xi+1,yi)或者(xi+1,yi+1)两个里面选一个

道理很简单, 这两个那个离理论计算点更近,就选哪个。

如图:我们可以计算 d2-d1,如果大于零,则上面的点误差更大,选则下面的点;如果小于零,则选择上面的点。

 

2、消除浮点运算:

pk= (delta)x  乘以  (d2-d1)

将 d2-d1 乘以 delta x 就可以消除 m ,从而避免浮点运算

 

3、递推公式

 pk+1 = pk + 2delta(y) - 2delta(x) (yk+1 - yk)

其中 

yk+1 - yk 的值根据 pk 的符号,要么为零(即 y 坐标不变),要么为 1(即向上递增一个坐标)

 

4、初始值 p0

p0 = 2delta(y) - delta(x) 

 

5、例题 

 

 


//==========================================



本文转自左洸博客园博客,原文链接:http://www.cnblogs.com/myqiao/archive/2011/06/09/2076467.html,如需转载请自行联系原作者

目录
相关文章
|
4月前
|
算法 图形学
【计算机图形学】实验一 DDA算法、Bresenham算法
【计算机图形学】实验一 DDA算法、Bresenham算法
111 3
|
4月前
|
算法 图形学
【计算机图形学】实验三 用Cohen-Sutherland裁剪算法实现直线段裁剪
【计算机图形学】实验三 用Cohen-Sutherland裁剪算法实现直线段裁剪
301 2
|
4月前
|
存储 算法 图形学
【计算机图形学】实验二 用扫描线算法实现多边形填充
【计算机图形学】实验二 用扫描线算法实现多边形填充
124 2
|
4月前
|
算法 图形学
【头歌 计算机图形学 练习】多边形填充v1.0 (第1关:扫描线填充算法(活动边表AET法) 第2关:边缘填充法 第3关:区域四连通种子填充算法 第4关:区域扫描线种子填充算法)
【头歌 计算机图形学 练习】多边形填充v1.0 (第1关:扫描线填充算法(活动边表AET法) 第2关:边缘填充法 第3关:区域四连通种子填充算法 第4关:区域扫描线种子填充算法)
305 0
|
算法 图形学
计算机图形学 之 中点画线算法
计算机图形学 之 中点画线算法
221 1
|
算法 图形学
计算机图形学 之 DDA直线算法(数值微分法)
计算机图形学 之 DDA直线算法(数值微分法)
341 0
|
算法 图形学
计算机图形学——实验五 基本图形学算法及着色器初步编程
实验五 基本图形学算法及着色器初步编程 1、 理解基本图形元素光栅化的基本原理,理解直线裁剪算法的原理; 2、 掌握直线的光栅化算法:DDA和Bresenham算法; 3、 掌握直线裁剪算法:Cohen-Surtherland算法; 1、 编程实现DDA算法和Bresenham算法生成直线。 2、 实现Cohen-Surtherland直线裁剪算法,调试、编译、修改程序。 要求: 根据所给的直线光栅化的示范源程序,在计算机上编译运行,输出正确结果(示范代码有错误,指出并改正)。
300 0
计算机图形学——实验五 基本图形学算法及着色器初步编程
|
编解码 算法 编译器
计算机图形学直线段的生成算法
计算机图形学直线段的生成算法
计算机图形学直线段的生成算法
|
23天前
|
算法 BI Serverless
基于鱼群算法的散热片形状优化matlab仿真
本研究利用浴盆曲线模拟空隙外形,并通过鱼群算法(FSA)优化浴盆曲线参数,以获得最佳孔隙度值及对应的R值。FSA通过模拟鱼群的聚群、避障和觅食行为,实现高效全局搜索。具体步骤包括初始化鱼群、计算适应度值、更新位置及判断终止条件。最终确定散热片的最佳形状参数。仿真结果显示该方法能显著提高优化效率。相关代码使用MATLAB 2022a实现。