李红林
摘 要:本文针对传统图形学的教学方式存在的不足,对计算机图形学中基本的图元生成算法的可视化进行了研究,并基于VC 6.0/MFC,实现了计算机基本图元可视化教学演示系统,使学生真正理解了基本图形元素的生成的具体过程,从而提高了学生的学习兴趣。
关键词: VC 图元 扫描转换 区域填充
中图分类号:TP391 文献标识码:A 文章编号:1672-3791(2016)05(a)-0000-00
计算机图形学是研究利用计算机生成、处理图形的学科[1]。该课程要求学生具有一定的程序设计知识和数学知识。在教学中,很多学校采用播放静态图片和一些基本算法源程序组成的教学幻灯片的模式。学生较难理解图形学算法的精要,从而影响其学习的主动性和积极性。基于此,本文基于VC++6.0 ,对图形学中基本图元生成算法的可视化进行了研究。
基本图形元素是指点、线、圆(圆弧)、区域填充和字符等[2]。在光栅扫描显示器上显示的图形,都是具有一种或多种颜色的像素的集合。确定最佳逼近图形的像素集合,并用指定属性写像素的过程称图形的扫描转换或生成[3]。本文主要研究点、线、圆的生成及填充。
1 点生成
计算机的光栅显示器可看作一个像素的矩阵,在其上显示图形,实际上是其中特定像素的集合[4]。点用一个像素表示,它是最基本的图形元素。屏幕上的一个点的坐标(x,y)代表一个像素点,要使该像素点发亮,需在缓冲器的对应地址位处,写一个灰度级别或色彩值。
2 直线生成
直线生成,实际上是在线段所对应的像素上画点的连续过程[2]。主要有直线方程、DDA、中点画线、Bresenham画线算法等。本文生成直线时,斜率取值为:。
2.1 直线方程生成直线
利用方程生成直线。当x每增加或减少1,代入直线方程算一算y的取值。
2.2 DDA算法
算法的实质是用数值方法解微分方程,是一种增量的方法。同时对x和y各增加一个小增量来计算下一步的x、y值。当时,x 每增加或减少1,y就增加或减少k。
2.3中点画线算法
如图1所示。在图1中, M是P1P2的中点,Q为直线与P1P2的交点,P是当前点,P的下一个距离理想直线最近的点要么取P1,要么取P2。若M在理想直线的下方,下一个点取P2,若M在理想直线的上方,P的下一个点应该取P1。若M恰好在理想直线上,下一个点可取P1也可取P2。以此类推,找到其余距离理想直线较近的点。
2.4 Brenham画线算法
如图2所示。已知当前点是P,Q为直线与P1P2的交点,Q把P1P2分成两段,一段是t,另一段是s,P的下一个距离理想直线最近的点要么取P1,要么取P2。若s>t,P的下一个点取P2;若s3 圆扫描转换算法
若要扫描转换圆,常用的方法有中点法与Bresenham画圆算法。
3.1中点画圆算法
如图3所示,P是当前点,M是P1P2的中点,要确定P的下一个距离理想圆弧较近的点是P1还是P2,只需把M点的坐标代入圆的方程,若,则说明M在圆外,下一个距离理想圆弧较近的点是P2,若,则说明M在圆内,下一个距离理想圆弧较近的点是P1,若,则说明M在圆上,下一个距离理想圆弧较近的点可以是P1也可以是P2。以此类推,依次找到距离理想圆弧较近的1/8圆周上的所有点。
3.2 Bresenham画圆算法
如图4所示,P是当前点,Q是级段P1P2与理想圆弧的交点,要确定P的下一个距离理想圆弧较近的点是P1还是P2。假设P1到Q的距离为d1,P2到Q的距离为d2。若d1>d2,下一个距离理想圆弧较近的点是P2,若d1