1 / 5
文档名称:

图形学画圆实验报告.doc

格式:doc   大小:31KB   页数:5页
下载后只包含 1 个 DOC 格式的文档,没有任何的图纸或源代码,查看文件列表

如果您已付费下载过本站文档,您可以点这里二次下载

分享

预览

图形学画圆实验报告.doc

上传人:taotao0d 2021/4/16 文件大小:31 KB

下载得到文件列表

图形学画圆实验报告.doc

相关文档

文档介绍

文档介绍:程序实现与上机实****二)
一、实验目的
编写圆和椭圆的扫描转换算法程序,验证算法的正确性。
二、实验任务
编写中点画圆法的扫描转换程序,考虑原点在(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)
O(0,0)
Y
X
(x0,y0)
R
(x0+R,y0)
p(x,y)
X’
Y’
p’1(x0 +x, y+y0)
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(d<0)

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, in