图形学画圆实验报告.doc

  1. 1、本文档共5页,可阅读全部内容。
  2. 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
  3. 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  4. 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
程序实现与上机实习(二) 一、实验目的 编写圆和椭圆的扫描转换算法程序,验证算法的正确性。 二、实验任务 编写中点画圆法的扫描转换程序,考虑原点在(x0,y0)处程序的改动; 添加鼠标程序,实现交互式画圆; 编写中点画椭圆法的扫描转换程序; 添加鼠标程序,实现交互式画椭圆; 三、实验内容 1.编写中点画圆法的扫描转换程序,考虑原点在(x0,y0)处程序的改动; 分析:考虑圆心不再原点,设圆心坐标为(x0,y0)。通过平移坐标原点到圆心,则第二个8分圆上一点p(x,y),其原始坐标为 x’=x+x0 y’=y+y0 即p’1(x0 +x, y+y0) 其它7个对称点分别是:p’2(x0+y,y+x0), p’3 (x0+y,y0-x),p’4 (x0+x,y0-y),p’5 (x0-x,y0-y),p’6 (x0-y,y0-x),p’7 (x0-y,y0+x),p’8 (x0-x,y0+y) 算法程序如下: MidpointCircle(int x0,int y0,int r, int color) { int x,y; float d; x=0;y=r;d=1.25-r; CirPot(x0,y0,x,y,color); while (x=y) { if(d0) { d+=2*x+3; x++; } else { d+=2*(x-y)+5; x++; y--; } CirPot(x0,y0,x,y,color); } /* while*/ } /* MidpointCiecle */ int CirPot(int x0,int y0,int x,int y,int color) { Setpixel((x0+x),(y0+y)); Setpixel((x0+y),(y0+x)); Setpixel((x0+y),(y0-x)); Setpixel((x0+x),(y0-y)); Setpixel((x0-x),(y0-y)); Setpixel((x0-y),(y0-x)); Setpixel((x0-y),(y0+x)); Setpixel((x0-x),(y0+y)); } 程序实现步骤: 建立MidPointCircle工程文件; 右击CMidPointCircleView类,建立成员函数 void MidpointCircle(CDC *pDC,int x0, int y0, int r, COLORREF color) int CirPot(CDC *pDC,int x0, int y0, int x, int y, COLORREF color) (3) 编写成员函数代码,程序如下: void CMidPointCircleView::MidpointCircle(CDC *pDC,int x0, int y0, int r, COLORREF color) { int x,y; float d; x=0;y=r;d=1.25-r; CirPot(pDC,x0,y0,x,y,color); while (x=y) { if(d0) { d+=2*x+3; x++; } else { d+=2*(x-y)+5; x++; y--; } CirPot(pDC,x0,y0,x,y,color); } /* while*/ } int CMidPointCircleView::CirPot(CDC *pDC,int x0, int y0, int x, int y, COLORREF color) { pDC-SetPixel((x0+x),(y0+y),color); pDC-SetPixel((x0+y),(y0+x),color); pDC-SetPixel((x0+y),(y0-x),color); pDC-SetPixel((x0+x),(y0-y),color); pDC-SetPixel((x0-x),(y0-y),color); pDC-SetPixel((x0-y),(y0-x),color); pDC-SetPixel((x0-y),(y0+x),color); pDC-SetPixel((x0-x),(y0+y),color); return 0; } (4)编写OnDraw(CDC* pDC)函数,程序如下: void

文档评论(0)

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

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

1亿VIP精品文档

相关文档