圆、椭圆的生成算法.doc

  1. 1、本文档共7页,可阅读全部内容。
  2. 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
  3. 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  4. 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
圆、椭圆的生成算法

XX大学计算机科学与技术学院 计算机科学与技术系上机实验报告 课程名称:计算机图形学 班级: 实验日期:2012-03-29 姓名: 学号: 指导教师: 实验序号:2 实验成绩: 一、实验名称 圆、椭圆的生成算法 二、实验目的及要求 优化后的算法:二次差分法 可任意指定圆心坐标。 三、实验环境 Win 7 Visual Studio 2010 四、实验原理 圆的中点算法 算法原理: 中点画圆算法就是每部单位间隔取样并且计算离圆最近的位置。 实现步骤: 1,输入圆心位置和圆的半径,得到圆周上的第一个点Point1; (假设起始点为坐标原点,后面将通过坐标平移来处理非圆心在圆点) 2,计算决策关键参数的初始值,P = 5/4 - r; 3,在每个Xn的位置,从n = 0开始,更具决策值P来判断: ??? 如果P0,下一个点的位置为(Xn+1,Yn); ?????? 并且执行P = P + 2*(Xn+1)+1; ??? 如果P=0,下一个点的位置为(Xn+1,Yn-1); ?????? 并且执行P = P + 2*(Xn+1)+1 - 2*(Yn-1); 4,通过对称原理计算其他7个对称相关点; 5,移动坐标到圆心点(x1,y1) ????? X = X + x1; ????? Y = Y + y1; 6,如果XY重复执行3到5的步骤,否则结束该算法 五、实验步骤及算法描述 依据算法、步骤编写源程序; 编辑源程序并进行调试; 进行运行测试,并结合情况进行调整; 对运行结果进行保存与分析; 打印源程序或把源程序以文件的形式提交; 按格式书写实验报告。 六、调试过程及实验结果 程序运行截图: 七、总结 通过这次试验,是我对中点画圆算法有了更深的理解,同时也锻炼了自己的编程实践能力,收获良多! 八、附录 核心代码: #region 显示圆弧上的八个对称点 /// summary /// 显示圆弧上的八个对称点 /// /summary /// param name=g画布/param /// param name=x点横坐标x/param /// param name=y点纵坐标y/param /// param name=c颜色/param void circlePoints(Graphics g ,int x , int y , Color c) { BaseDraw.drawPixel (g , x, y, c); BaseDraw.drawPixel (g , y, x, c); BaseDraw.drawPixel (g , -x, y, c); BaseDraw.drawPixel (g , y, -x, c); BaseDraw.drawPixel (g , x, -y, c); BaseDraw.drawPixel (g , -y, x, c); BaseDraw.drawPixel (g , -x, -y, c); BaseDraw.drawPixel (g , -y, -x, c); } #endregion #region 中点画圆法 void MidPointCircle(Graphics g , int r, Color c) { int x, y; float d; x = 0; y = r; d = 1.25f - r; circlePoints ( g , x, y, c); //显示圆弧上的八个对称点 while (x = y) { if (d 0) d += 2*x + 3; else { d += 2*(x - y) + 5; y--;} x++; circlePoints (g , x, y, c); } } #endregion //调用画圆 private void mnuCircleMid_Click(object sender, System.EventArgs e) { LineType = 3; bDelay = true ; Repaint(); }

文档评论(0)

xcs88858 + 关注
实名认证
内容提供者

该用户很懒,什么也没介绍

版权声明书
用户编号:8130065136000003

1亿VIP精品文档

相关文档