计算机图形学第五章---基本图形生成算法

本文详细介绍了计算机图形学中的基本图形生成算法,包括直线段、圆、多边形及区域填充的扫描转换。重点讨论了Bresenham算法及其改进,以及多边形和圆的绘制方法。还提到了反走样技术,以提高图形的显示质量。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

 

第五章 基本图形生成算法

如何在指定的输出设备上根据坐标描述构造基本二维几何图形(点、直线、圆、椭圆、多边形域、字符串及其相关属性等)。

 

图形生成的概念

图形的生成:是在指定的输出设备上,根据坐标描述构造二维几何图形。

图形的扫描转换:在光栅显示器等数字设备上确定一个最佳逼近于图形的象素集的过程。

 

直线段的扫描转换

直线的绘制要求

  1)直线要直;

  2)直线的端点要准确,无定向性无断裂;

  3)直线的亮度、色泽要均匀;

  4)画线的速度要快;

  5)具有不同的色泽、亮度、线型等。

解决的问题:给定直线两端点P0(x0,y0)P1(x1,y1),画出该直线。

 

数值微分法(DDA):

增量算法

直观、易实现

不利于用硬件实现

 

 

中点Bresenhan算法:

算法原理:根据直线的斜率确定或选择变量在xy方向上每次递增一个单位,而另一方向的增量为10,它取决于实际直线与相邻象素点的距离,这一距离称为误差项。

 

中点Bresenham算法——算法步骤

输入直线的两端点P0(x0,y0)P1(x1,y1)

计算初始值△x、△yD=x-2yx=x0y=y0

绘制点(x,y)。判断D的符号。若D<0,则(x,y)更新为(x+1,y+1)D更新为D+2x-2y;否则(x,y)更新为(x+1,y), D更新为D-2y

当直线没有画完时,重复上一步骤,否则结束。

 

改进的Bresenhan算法——算法步骤

1.输入直线的两端点P0(x0,y0)P1(x1,y1)

2.计算初始值△x、△ye=-xx=x0y=y0

3.绘制点(x,y)

4.e更新为e+2y,判断e的符号。若e>0,则(x,y)更新为(x+1,y+1),同时将e更新为e-2x;否则(x,y)更新为(x+1,y)

5.当直线没有画完时,重复步骤34。否则结束。

 

圆的扫描转换

解决的问题:绘出圆心在原点,半径为整数R的圆x2+y2=R2

 

简单方程产生圆弧:

算法原理:利用其函数方程,直接离散计算。

 

中点Bresenham画圆——算法步骤

1.输入圆的半径R

2.计算初始值d=1-Rx=0y=R

3.绘制点(x,y)及其在八分圆中的另外七个对称点。

4.判断d的符号。若d<0,则先将d更新为d+2x+3,再将(x,y)更新为(x+1,y);否则先将d更新为d+2(x-y)+5,再将(x,y)更新为(x+1,y-1)

5.x<y时,重复步骤34。否则结束。

 

多边形的扫描转换与区域填充:

多边形的扫描转换主要是通过确定穿越区域的扫描线的覆盖区间来填充。

区域填充是从给定的位置开始涂描直到指定的边界条件为止。

 

 

多边形的扫描转

评论 6
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值