计算机图形学 实验 画圆法_第1页
计算机图形学 实验 画圆法_第2页
计算机图形学 实验 画圆法_第3页
计算机图形学 实验 画圆法_第4页
全文预览已结束

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

XXXXXXXX大学(计算机图形学)实验报告实验名称画圆法实验时间年月日专业姓名学号预习操作座位号教师签名总评一、实验目的:1.了解画圆法的基本思想;2.掌握画圆法的基本步骤。二、实验原理:1.中点画圆法中点画圆法是利用圆心在坐标原点圆的方程,将每个像素的中点坐标代入圆的方程得到d,再通过d的值来确定中点与圆的位置。若d<0,则取P1为下一象素,而且再下一象素的判别式为若d>=0,则应取P2为下一象素,而且下一象素的判别式为第一个象素是(0,R),判别式d的初始值为中点画圆法绘出的只是一个完整圆弧的八分之一,然后根据圆良好的对称性,绘出和参考点对称的另外七个点,再用中点画圆法,以生成的这几个点为基础,绘出其它七段圆弧,构成一个完整的园。这七个点的坐标分别为:(x0+x,y0-y,c),(x0+x,y0+y,c),(x0-x,y0-y,c),(x0-x,y0+y,c),(x0-y,y0-x,c),(x0-y,y0+x,c),(x0+y,y0+x,c),(x0+y,y0-x,c)。找到和参考点对称的另外几个点,再在中点绘制圆弧的定义函数中调用,绘制另外的几段圆弧。三、实验内容:八分之一画圆法:///////////////////////////////////////////////////////////////////////////////CMy4Viewconstruction/destructionvoidMidpointCircle(CDC*pdc,intx0,inty0,intr,intcolor){ intx,y; floatd; x=0; y=r; d=1.25-r; pdc->SetPixel(x0+x,y0-y,color); while(x<=y) { x++; if(d<0) { d+=2*x+3; } else { y--;d+=2*(x-y)+5; } pdc->SetPixel(x0+x,y0-y,color); pdc->SetPixel(x0-x,y0-y,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+y,y0+x,color); pdc->SetPixel(x0-y,y0+x,color); }}CMy0View::CMy0View(){ //TODO:addconstructioncodehere}///////////////////////////////////////////////////////////////////////////////CMy4ViewmessagehandlersvoidCMy4View::On1(){ //TODO:Addyourcommandhandlercodehere intx0,y0; x0=138,y0=138; intr=100; intcolor=RGB(255,0,255); CClientDCdc(this); MidpointCircle(&dc,x0,y0,r,color);}中心画椭圆法:///////////////////////////////////////////////////////////////////////////////CMy9ViewmessagehandlersvoidCMy9View::On1(){ //TODO:Addyourcommandhandlercodehere CDC*pdc=GetDC(); intx0=400,y0=200,a=120,b=60,x,y,color=(RGB(0,0,255)); doubled1,d2; x=0;y=b; d1=b*b+a*a*(-b+0.25);pdc->SetPixel(x0+x,y0+y,color); pdc->SetPixel(x0-x,y0-y,color); pdc->SetPixel(x0-x,y0+y,color); pdc->SetPixel(x0+x,y0-y,color);while(b*b*(x+1)<a*a*(y-0.5)) { if(d1<=0) { d1+=b*b*(2*x+3); x++; }else { d1+=b*b*(2*x+3)+a*a*(-2*y+2); x++;y--; }pdc->SetPixel(x0+x,y0+y,color); pdc->SetPixel(x0-x,y0-y,color); pdc->SetPixel(x0-x,y0+y,color); pdc->SetPixel(x0+x,y0-y,color);} d2=b*b*(x+0.5)*(x+0.5)+a*a*(y-1)*(y-1)-a*a*b*b; while(y>0) { if(d2<=0) { d2+=b*b*(2*x+2)+a*a*(-2*y+3); x++;y--; } else { d2+=a*a*(-2*y+3); y--; }pdc->SetPixel(x0+x,y0+y,color); pdc->SetPixel(x0-x,y0-y,color); pdc->SetPixel(x0-x,y0+y,color); pdc->SetPixel(x0+x,y0-y,color); } ReleaseDC(pdc);}四、实验心得: 八分之一画圆法中,第一段代码的

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论