下载此文档

计算机图形学课内实验.doc


文档分类:IT计算机 | 页数:约12页 举报非法文档有奖
1/12
下载提示
  • 1.该资料是网友上传的,本站提供全文预览,预览什么样,下载就什么样。
  • 2.下载该文档所得收入归上传者、原创者。
  • 3.下载的文档,不会出现我们的网址水印。
1/12 下载此文档
文档列表 文档介绍
《计算机图形学课内实验》实验报告班级: 计算机 91 姓名: 程战战学号: 2009055006 日期: 2012/11/7 一、实验目的及要求基本掌握中点圆算法的编程实现。二、实验环境 Windows7 OS、VS编程环境三、实验内容输入任一点作为圆心坐标,并输入一个任意的半径,从而画出相应圆, 并且对非法输入能够检测。四、数据结构和算法描述 1. 数据结构: 设要显示圆的圆心在原点(0, 0),半径为 R,起点在(0, R)处,终点在(, )处,顺时针生成八分之一圆,利用对称性扫描转换全部圆。为了应用中点画圆法,我们定义一个圆函数 F (x, y)=x 2 +y 2-R 2任何点(x, y)的相对位置可由圆函数的符号来检测: F (x, y) <0点(x, y) 位于数学圆内=0点(x, y) 位于数学圆上>0点(x, y) 位于数学圆外如下图所示,图中有两条圆弧 A和 B ,假定当前取点为 Pi(xi , yi) ,如果顺时针生成圆,那么下一点只能取正右方的点 E(xi+1 , yi) 或右下方的点 SE(xi+1 , yi-1) 两者之一。假设 M是E和 SE 的中点,即,则: 1、当 F(M)<0 时,M在圆内(圆弧 A) ,这说明点 E距离圆更近,应取点 E作为下一象素点; 2、当 F(M)>0 时, M在圆外(圆弧 B),表明 SE 点离圆更近,应取 SE 点; 3、当 F(M)=0 时,在E点与 SE 点之中随便取一个即可,我们约定取 SE 点。 2. 中点圆算法思想如下: 我们用中点 M 的圆函数作为决策变量 di ,同时用增量法来迭代计算下一个中点 M的决策变量 di+1 。(2- 21) 下面分两种情况来讨论在迭代计算中决策变量 di+1 的推导。 1、见图(a),若 di<0 ,则选择 E点, 接着下一个中点就是, 这时新的决策变量为: (2- 22) (a) (d i <0) 中点画线算法式(2-22) 减去(2-21) 得: d i+1 =d i +2x i +3 (2- 23) 2、见图(b),若di≥0,则选择 SE 点,接着下一个中点就是, 这时新的决策变量为: (2- 24) (b) (d i≥ 0) 中点画线算法式(2- 24) 减去(2- 21) 得: d i+1 =d i +2(x i -y i) +5 (2- 25) 我们利用递推迭代计算这八分之一圆弧上的每个点,每次迭代需要两步处理: (1)用前一次迭代算出的决策变量的符号来决定本次选择的点。(2)对本次选择的点,重新递推计算得出新的决策变量的值。剩下的问题是计算初始决策变量 d0,如下图所示。对于初始点(0, R),顺时针生成八分之一圆,下一个中点 M的坐标是,所以: (2- 26) 生成圆的初始条件和圆的生成方向 3、具体步骤如下: (1)输入:圆半径 r、圆心(x0 , y0) ; (2)确定初值: x=0 , y=r 、 d=5/4-r ; (3) While(x<=y) {·利用八分对称性,用规定的颜色 color 画八个象素点(x, y); ·若d≥0{ y=y-1 ; d=d+2(x-y)+5) ; }否则 d=d+2x+3 ; · x=x+1 ; } 五、调试过程及实验结果 1. 调试过程: 实验中未出现问题,调试时一切顺利。 2. 实验结果截图: (1)圆心为( 0,0),半径为 5的圆: (2)圆心为( 5,5),半径为 3的圆: 六、总结本次实验基本掌握了 DDA 算法、 Bresenham 画线算法、中点圆画线算法、中点椭圆算法,加深了对画线算法设计的原则和目标的理解。并且对图形学产生了相当的兴趣,暂时打算,考研结束后,重点学****一下图形学方面的相关知识,拓展自己的知识面。感谢老师和研究生学长的指导。七、附录(源程序清单) 1、 : header file #if !defined(AFX_CIRCLE_H__AE990B41_3A93_468B_BAC1_B5DCE1CF1F5F__INCLUDED_) #define AFX_CIRCLE_H__AE990B41_3A93_468B_BAC1_B5DCE1CF1F5F__INCLUDED_ #if _MSC_VER > 1000 #pragma once #endif // _MSC_VER > 1000 // : header file // ///////////////////////////////////////////////////////////////////////////// // circle dialog class circle : public CPropertyPage { DECLARE_

计算机图形学课内实验 来自淘豆网www.taodocs.com转载请标明出处.

非法内容举报中心
文档信息
  • 页数12
  • 收藏数0 收藏
  • 顶次数0
  • 上传人yzhlyb
  • 文件大小177 KB
  • 时间2017-02-23