- 1、本文档共6页,可阅读全部内容。
- 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
- 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
- 5、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
- 6、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们。
- 7、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
- 8、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
计算机图形学(中点画圆)
西北师范大学计算机科学与工程学院学生实验报告
学号 专业 计算机科学与技术 班级 师范(1)班 姓名 课程名称 图形学 课程类型 实验名称 实验二 中点画圆 实验目的:
1.了解画圆法的基本思想;?
2.掌握画圆法的基本步骤。
二、实验原理
1、判别式是中点画线法的关键,(0=k=1)判别式是为了判断下一个点是在当前点正右边还是右上方,是和中点比较的结果。d的含义下一个点到中点的垂直距离,它的正负可以做下一个位置的判断。初值:d?=?2*a?+?b,增量:上一个点d=0,则d+2*a,上一个点d=0,则d+2*(a+b)。
2、中点法是利用将中点坐标代入到判别式中,通过判断得到点的位置(仅有两种情况)。圆有很好的对称性,八对称性(其实是n对称性),只要求出右上方的八分之一部分就可以得到整个圆弧上的坐标,显然,判别式值小于0,中点在圆内,取正右方的点,d+2x+3;判别式大于等于0,中点在圆外或圆上,取右下方的点,d+2(x-y)+5;??d的初值,将(1,R-0.5)代入判别式,=1.25?-?R。为了提高效率,我们转化为整数运算,e?=?d?-?0.25?=?1?-?R。x++?直到?xy。
3、中点画圆法是利用圆心在坐标原点(0,0),半径为R(圆的方程X^2+Y^2=R^2),将每个像素的中点坐标代入圆的方程得到d,再通过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)。?
找到和参考点对称的另外几个点,再在中点绘制圆弧的定义函数中调用,绘制另外的几段圆弧。
三、实验代码及截图
代码:
#includestdio.h
#includegraphics.h
MidpointCircle(int xc,int yc,int r,int color)
{
int x=0,y=r,d=1-r;
WholeCircle(xc,yc,x,y,color);
while(x=y)
{
if(d0)
{
d+=2*x+3;
x++;
}
else
{
d+=2*(x-y)+5;
x++;
y--;
WholeCircle(xc,yc,x,y,color);
}
}
}
WholeCircle(int xc,int yc,int x,int y,int color)
{
putpixel(xc+x,yc+y,color);
putpixel(xc-x,yc+y,color);
putpixel(xc+x,yc-y,color);
putpixel(xc-x,yc-y,color);
putpixel(xc+y,yc+x,color);
putpixel(xc-y,yc+x,color);
putpixel(xc+y,yc-x,color);
putpixel(xc-y,yc-x,color);
}
int main()
{
int gdriver = DETECT,gmode;
initgraph(gdriver,gmode,);
MidpointCircle(300,250,200,5);
getch ();
closegraph();
}
实验结果:
实验总结:
通过本次实验本人掌握常用图形程序设计和编程实现贝塞尔曲线算法,得出相应的输出图形;希望在能为以后的学习打下基础。 实验评语:
实验成绩 教师签名
您可能关注的文档
- 计算机二级公共基础考前抱佛脚.doc
- 计算机二级公共基础考点.doc
- 计算机仿真matlab.doc
- 计算机作业1 - 副本.doc
- 计算机使用USB口更新NS触摸屏系统固件.docx
- 计算机信息化办公考试(网络选择题).doc
- 计算机信息管理专业课程.doc
- 计算机信息系统集成报告.doc
- 计算机信息选择题文档.docx
- 计算机几何-点在多边形内判断.doc
- 职业技术学院2024级工业机器人技术(安装与维护)专业人才培养方案.docx
- 职业技术学院2024级应用化工技术专业人才培养方案.pdf
- 职业技术学院2024级软件技术(前端开发)专业人才培养方案.pdf
- 职业技术学院2024软件技术专业人才培养方案.docx
- 职业技术学院2024级信息安全技术应用(安全运维)专业人才培养方案.docx
- 职业技术学院2024级新能源汽车检测与维修技术(车辆鉴定与评估)专业人才培养方案.pdf
- 职业技术学院2024级石油炼制技术专业人才培养方案.pdf
- 职业技术学院2024级环境监测技术专业人才培养方案.docx
- 职业技术学院2024级汽车制造与试验技术专业人才培养方案.pdf
- 职业技术学院2024级信息安全技术应用专业人才培养方案.pdf
文档评论(0)