计算机图形学课程第二次试验

(16页)

本资源提供全文预览,点击全文预览即可全文预览,如果喜欢文档就下载吧,查找使用更方便哦!

14.9 积分

重庆大学学生实验报告实验课程名称 计算机图形学 开课实验室 DS1501 学 院 软件学院 年级一三级专业班 学生姓名 学号 开课时间 2015 至 2016 学年第 1 学 期总成绩教师签名软件学院制 《基本图形元素的生成算法(直线)》实验报告开课实验室: 年 月 日学院软件学院 年级、专业、班姓名 成绩课程名称计算机图形学实验项R名 称菽木图形元素的生成算法(圆、椭圆)指导教师教师评语教师签名:年 月円一、 实验目的1) 实现绘制圆的中点算法和Bresenham算法。2) 实现绘制椭圆的屮点算法。二、 实验原理圆(屮点算法)圆的特征一八分对称性圆被定义为到给定中心位置(xc,yj距离为r的点集。圆心位于原点的岡有四条对称轴x=0, y=0,*^和乂=-7。若已知圆弧上一点(x, y),可以得到其关于四条对称轴的其t 7个点,这种性质称为八分对称性。因此,只要扫描转换八分之一關弧,就町以求出整个關弧的象素集。显示圆弧上的八个对称点的算法:void CirclePoints(int x, int y,int color){ Putpixel (x, y, color) ; Putpixel (y, x, color);Putpixel (~x, y, color) ; Putpixel (y, ~x, color);Putpixel (x, -y, color) ; Putpixel (-y, x, color);Putpixel (-x, -y, color); Putpixel (-y, -x, color);}如果我们构造函数F(x,y)=x2+y2-R2,则对于岡上的点有F(x,y)=0,对P圆外的点有F(x,y)〉0,对 于岡P、j的点F(x,y)<0。与中点O线法一样,构造判別式: d=F(M)=F(xp+l,yp-O.5)=(xp+1 )2+(yp-0.5)2-R2若d<0,则应取Pl为下一象素,而且再下一象素的判别式为: d=F(xp+2,yp-0.5)=(xp+2)2+(yp-0.5)2-R2=d+2xp+3苦d>0,则应取P2为下一象素,而且下一象素的判别式为 d=F(xp+2,yp-l .5)=(xp+2)2+(yp-1.5)2-R2=d+2(xp-yp)+5我们这里讨论的第一个象素是(0,R),判别式d的初始值为: d0=F(l,R-0.5)=1.25-R图2.2.1当前象素与下一象素的候选者屮点M圆算法:MidPointCircle(int r int color){ int x,y;float d;x=0; y=r; d=1.25-r; circlepoints (x,y,color); while(x<=y){ if(d<0) d+=2*x+3;else { d+=2*(x-y)+5; y—;}X++;circlepoints (x,y,color);})为了进一步提高算法的效率,可以将上而的算法屮的浮点数改写成整数,将乘法运算改成加 法运算,即仅用整数实现屮点M圆法。(2)圆弧的生成算法算法:基木同圆弧算法,是方程变得货杂F(x,y)=(bx)A2+(ay)A2-(ab)A2.对称性:4分对称,画第一象限分段依裾:斜率为一点三、使用仪器、材料VS2012四、实验步骤函数主程序部分代码如下:int main 0 {HWND hw=GetConsoleWindow(): HDC hDC=GotDC(hw): int r, x, y; int a, b;COLORREF coloi-OxffOOff; printf("输入1位圆,输入2为椭圆: int number1;scanf(〃%d〃,&numberl): if(number1==1) {printf ("请输入圆的半径R"); scanf (〃%d",&r); drowcircle(r, color);}else if (numberl==2) {printf (〃输入a,b的大小:");scanf_s("%d",&a) ;scanf_s("%cT,&b); drowelipse(a, b, color) ;}else printf ("输出错误");/*scanf (〃%d",&r);drowcircle(r, color);*/}输入1时,进入画圆部分,输入半径的大小得出图像。输入2时进入画椭圆界面,输入a, b的值,得出椭圆?C:\Windows\system32\cmd.exe.圆,输入2为椭圆:C:\Wmdows\system32\cmd.exe讓織B2鵬1C:\Wmdows\system32\cmd.exe隱>2鵬21.中点画圆算法:代码如下:void drowcircle(int r, int color) //中点画圆算法{ int x, y; float d; color:0xff00ff; x=0; y=r; d二 1.25-r; circlepoints (x,y,color); whi le(x<=y){ if (d<0) d+=2*x+3;else{ d+=2*(x-y)+5; y—;} x++;circlepoints (x, y, color):}}定义x,y,r,赋予初值,确定颜色位数。根裾增量值确定d。//八次对称void circlepoints(int x, int y ,int color){HWND hw=GetConsoleWindow():HDC hl)OGetDC(hw);SetPixel(hDC, x*2+200, y*2+200, color); SetPixel(hDC,y*2+200, x*2+200, color); SetPixel(hDC, -x*2+200, y*2+200, color); SetPixel(hDC,y*2+200, -x*2+200, color); SetPixel(hDC, x*2+200, -y*2+200, color); SetPixel (hDC,-y*2+200,x*2+200,color); SetPixel (hDC, -x*2+200, -v*2+200, color) : SetPixel (hl)C, -y*2+200, -x*2+200, color);}确定八次对称画法,形成圆,结果如图:C:\Windows\sys相 ? 为0 -2 31-?,R ■f半继麵量1■入任 盤目青"""" 中点画圆法流程图:椭圆画法:。令K啣藝识莓,坦s^ffi {{! (JOo3>:>p)JI} (0=391 w {:(?IOr-Hs>;> x*l*l)3f—tJ q=e :(J0J03 *x)3sdJJo (p/1)十q*5K-q*(Irp-q=>.o=x :P 1§TJ :X lu-l—l:x 1.S}(JOJS J3gsoyq l.5«luJ)3sdnaA\0JP POA "诮眉lnKl荽//:(JOISoSAtooc\l+2x-o§) TSMSS 二SISoSAt-ooCM+s 念-OGM) P.2CU13S ;.so3oof 交 ros+交 xo(Iq) P.2CUSS 二Jo—H03os+CMtos+CM艺o(Iq) P.2JSS乂 >一 qosooHDaqOGH;)MOP.5AoIosuoya9HMq dgH}(JOO3 J3g38>.l.s>

 天天文库所有资源均是用户自行上传分享,仅供网友学习交流,未经上传用户书面授权,请勿作他用。

查找计算机图形学课程学习资源,计算机图形学课程第二次试验相关推荐

  1. java-php-python-ssm计算机公共课程学习资源管理系统计算机毕业设计

    java-php-python-ssm计算机公共课程学习资源管理系统计算机毕业设计 java-php-python-ssm计算机公共课程学习资源管理系统计算机毕业设计 本源码技术栈: 项目架构:B/S ...

  2. java计算机毕业设计计算机公共课程学习资源管理系统源码+mysql数据库+系统+lw文档+部署

    java计算机毕业设计计算机公共课程学习资源管理系统源码+mysql数据库+系统+lw文档+部署 java计算机毕业设计计算机公共课程学习资源管理系统源码+mysql数据库+系统+lw文档+部署 本源 ...

  3. 基于JAVA英语课程学习网站计算机毕业设计源码+系统+mysql数据库+lw文档+部署

    基于JAVA英语课程学习网站计算机毕业设计源码+系统+mysql数据库+lw文档+部署 基于JAVA英语课程学习网站计算机毕业设计源码+系统+mysql数据库+lw文档+部署 本源码技术栈: 项目架构 ...

  4. java-php-python-ssm计算机类在线学习管理系统计算机毕业设计

    java-php-python-ssm计算机类在线学习管理系统计算机毕业设计 java-php-python-ssm计算机类在线学习管理系统计算机毕业设计 本源码技术栈: 项目架构:B/S架构 开发语 ...

  5. java计算机类在线学习管理系统计算机毕业设计MyBatis+系统+LW文档+源码+调试部署

    java计算机类在线学习管理系统计算机毕业设计MyBatis+系统+LW文档+源码+调试部署 java计算机类在线学习管理系统计算机毕业设计MyBatis+系统+LW文档+源码+调试部署 本源码技术栈 ...

  6. 北邮计算机学院课程学习资源汇总

    北邮计算机学院学习资源汇总 高数 [视频]bilibili宋浩(可爱又闷骚的老师,视频整体比较长,高数上.下的都是全的,讲的也很细,课的话看着一个就够了) [资料]吉米多维奇(yyds的习题书,我高数 ...

  7. 计算机课程学习小结,计算机课程学习心得5篇___.docx

    计算机课程学习心得5篇___ 计算机技术的进展,促进了教学媒体的开发和利用,训练资源和资料能得到共享.在教学上应用计算机,能向同学供应更多的.更现代化的科学学问和技能训练,让同学对学习有更多的选择,使 ...

  8. 《计算机组成原理》课程学习(12)——计算机组成原理作业1-10章思考题与习题答案

    第1章 计算机系统概论 1. 什么是计算机系统.计算机硬件和计算机软件?硬件和软件哪个更重要? 解:P3 计算机系统:由计算机硬件系统和软件系统组成的综合体. 计算机硬件:指计算机中的电子线路和物理装 ...

  9. 计算机课真多,为什么有这么多的学习资源和在线课程,依然无法提升自己的能力...

    为什么我们读了很多书,看了很多网络课程,当发生具体问题时,仍然不能利用书中的理论和方法.视频中的操作流程,能帮助我们解决实际问题吗?为什么我们读了那么多书,看了那么多在线课程,但在面对某个特定问题时, ...

  10. 计算机组成与结构资源,计算机组成与系统结构-Selubc资源共享空间-home.ppt

    计算机组成与系统结构-Selubc资源共享空间-home.ppt * * * * * * e-Learning是指通过因特网或其他数字化内容进行学习与教学的活动 充分利用现代信息技术所提供的.具有全新 ...

最新文章

  1. 算法回顾(三) 二分查找
  2. H3C LMI协议标准
  3. tf.gather( )的详细解析
  4. 【彩彩只能变身队】后端工作总结
  5. 静态html js文件上传,js实现动态添加上传文件页面
  6. 使用nagios监控oracle
  7. Linux下修改Tomcat默认端口
  8. YApi--使用YApi的目的
  9. 吴恩达机器学习 逻辑回归 作业2(芯片预测) Python实现 代码详细解释
  10. PHP开发者最好的学习资源收集
  11. haartraining生成.xml过程
  12. linux-推荐两款好用的录屏软件
  13. 修改表字段属性_设置对象表字段的有效性规则
  14. python 穷举法 算24点(史上最简短代码)
  15. 关于Facebook的28件小事
  16. iOS 微信 唤醒客户端失败注册失败需要UniversalLink 的解决方案
  17. 基于Vue+ElementUI的省市区地址选择通用组件
  18. Google Play网页显示语言切换方法
  19. Python攻关之模块(1)
  20. java 适合练手的java项目

热门文章

  1. Twitter结盟Shopify 大力推广“Buy”按钮
  2. 《暗黑世界V1.3》数据库表说明文档
  3. 程序错误:Cannot construct instance of `java.time.LocalDate` LocalDateTime序列化问题:
  4. 数据库select查询
  5. Linux篇 Ubunt 搭建Samba服务器共享到Windows
  6. liunx设置定时任务脚本执行
  7. 基于BERT和双向LSTM的微博评论倾向性分析研究-笔记
  8. [WeiDesign]微博计数器的设计(下)
  9. chrome本地调试跨域问题
  10. 关于老鹰主机域名注册续费主机,我购买时遇到的问题