计算机图形学 实验 画圆法.doc

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

XXXXXXXX大学(计算机图形学)实验报告

实验名称画圆法

实验时间年月日

专业姓名学号

预习操作座位号

教师签名总评

一、实验目的:

1.了解画圆法的基本思想;

2.掌握画圆法的基本步骤。

二、实验原理:

1.中点画圆法

中点画圆法是利用圆心在坐标原点圆的方程,将每个像素的中点坐标代入圆的方程得到d,再通过d的值来确定中点与圆的位置。

若d0,则取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/destruction

voidMidpointCircle(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(d0)

{

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

}

/////////////////////////////////////////////////////////////////////////////

//CMy4Viewmessagehandlers

voidCMy4View::On1()

{

//TODO:Addyourcommandhandlercodehere

intx0,y0;

x0=138,y0=138;

intr=100;

intcolor=RGB(255,0,255);

CClientDCdc(this);

MidpointCircle(dc,x0,y0,r,color);

}

中心画椭圆法:

/////////////////////////////////////////////////////////////////////////////

//CMy9Viewmessagehandlers

voidCMy9View::On1()

{

//TODO:Addyourcommandhandlercodehere

CDC*pdc=GetDC();

您可能关注的文档

文档评论(0)

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

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

1亿VIP精品文档

相关文档