文档介绍:计算机科学与技术学院
2012-2013学年第一学期
《计算机图形学》实验报告
实验一:直线、圆的生成算法
一、实验目的与要求
(1)了解Visual C++等编程环境中常用控件命令与绘图函数,初步掌握在实验设计集成环境(IDE)下进行图形处理程序的设计方法。
实现现直线DDA、中点生成算法、Bresenham生成算法;
实现圆的中点生成算法、Bresenham生成算法。
实验内容
(1)数值微分法(DDA)
将平面分成IA、IIA、IIIA、IVA、IB、IIB、IIIB、IVB八个区域。其中,A区域线段的斜率
,B区域线段的斜率。DDA算法的基本思想就是利用线段方程(),当线段在A区域时,可将作为自变量,令;当线段在B区域时,可将作为自变量,令。
步骤一:记录线段的起点及终点,并计算出直线的斜率;
步骤二:判断值,若,则执行步骤三;若,则执行步骤四;
步骤三:记录点,令,;
步骤四:记录点,令,;
步骤五:根据的取值,重复执行步骤三或步骤四直至线段终点。
中点画线法
比较直线段与坐标网格的交点和与其相邻的两像素点中点的位置关系,若在上方,则下方像素点离直线段更近,取点;若在下方,则上方像素点离直线段更近,取点。中点画线法的基本思想就是利用直线方程,每次将点坐标带入方程。若,则点在线段上方;若,在线上;若,在线下方。
步骤一:记录线段的起点及终点,设置浮点型变量,,,,,,其中,,,,,;
步骤二:判断值,若,则令;若,则令,;
步骤三:记录点,令,并重复步骤二直至线段终点。
Bresenham画线法
此方法与中点画线法的原理类似,即求直线与各垂直网格线的交点到下方像素点的距离,进而选出最近的结点。
步骤一:记录线段的起点及终点,设置浮点型变量,,,,,其中,,;
步骤二:判断值,若,则令,;若,则令;
步骤三:记录点,令,并重复步骤二直至线段终点。
圆的生成算法
圆心位于原点的圆都有,,,四条对称轴,已知圆上一点就可以画出另外七个对应点,所以可以采用八分画圆法。以下算法均为扫描到顺时针的圆弧。
中点画圆法
与直线的中点画线法相类似,即为判断两像素点中点与圆的位置关系。若在圆内,则取上方像素点;若在圆外,则取下方像素点。基本原理利用了圆的方程。每次将点坐标带入方程。若,则点在圆外;若,在圆上