计算机图形学正负法画圆

合集下载
  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

计算机图形学试验报告(六)

试验名称:利用正负法画圆

专业:地理信息系统班级:2011级1班学号:********姓名:日期:2013年

一、试验内容

1、利用中点法思想编写函数;

2、利用算法生成圆;

3、完成属性设置和增加交互功能;

二、试验目的

通过上机操作,编写中点法生成圆,理解重点算法的生成原理,并实现简单的交互功能。

三、试验原理

中点法生成圆,是利用函数曲线的交点与两个像素的中点的位置关系,来确定下一像素点的选取,决策变量d的初始值为d=d=5.0/4-r; 当点(x,y)在圆内时,d<0;当点在圆外时,d>0;当点在圆上时,d=0。根据判别变量F的正负,可设定x,y的移动方向,然后利用映射变换生成整个圆。

四、程序设计流程

五、试验程序

(1)

#include “graphics.h”

#include “conio.h”

void MidpointCircle(x0,y0,r,color)

{

int x,y;

float d;

x=0;

y=r;

d=5.0/4-r; //设置初始变量d

while(x<=y) { //结束判断

putdot(x0,y0,x,y,color);

if(d<0)

d+=x*2.0+3; //更新判别变量

else {

d+=2.0*(x-y)+5;

y--; //点在圆外,向下走一个单位}

x++;

}

}

putdot(x0,y0,x,y,color)

{

putpixel(x0+x,y0+y,color);

putpixel(x0+x,y0-y,color);

putpixel(x0-x,y0+y,color);

putpixel(x0-x,y0-y,color);

putpixel(x0+y,y0+x,color);

putpixel(x0+y,y0-x,color);

putpixel(x0-y,y0+x,color);

putpixel(x0-y,y0-x,color);

}

void main()

{

int x0,y0,r,color;

int gdriver=DETECT,gmode;

initgraph(&gdriver,&gmode,"c:\\TC20\\BGI");

setbkcolor(1);

printf("please input:x0,y0,r,color:\n");

scanf("%d,%d,%d,%d",&x0,&y0,&r,&color);

MidpointCircle(x0,y0,r,color);

getch();

closegraph();

}

六、试验结果

以70为半径,(100,100)为圆心坐标画出一颜色为黄色的圆。

七、试验总结

这次上机实验,主要是练习利用中点法生成圆,并理解中点法生成圆的原理,在生成圆的不同算法的里,都需要找到一个判别变量,判断现在的点是在圆内还是圆,然后在确定x,y方向是否增加,再根据坐标变换画出整个圆。

相关文档
最新文档