计算机图形学-- 圆的生成算法的实现

计算机图形学-- 圆的生成算法的实现

ID:9950489

大小:56.00 KB

页数:7页

时间:2018-05-16

计算机图形学-- 圆的生成算法的实现_第1页
计算机图形学-- 圆的生成算法的实现_第2页
计算机图形学-- 圆的生成算法的实现_第3页
计算机图形学-- 圆的生成算法的实现_第4页
计算机图形学-- 圆的生成算法的实现_第5页
资源描述:

《计算机图形学-- 圆的生成算法的实现》由会员上传分享,免费在线阅读,更多相关内容在行业资料-天天文库

1、实验三圆的生成算法的实现班级08信计2班学号20080502057姓名冯双捷分数一、实验目的和要求:1、掌握图形显示基本原理2、掌握使用简单函数实现画圆的方法3、熟悉圆的生成算法,及圆的绘制方法二、实验内容:1、编程实现line函数的画圆方法;2、由矩形画出四个圆的算法实现;3、编程实现生成圆弧的中点算法、Bresenham画圆算法三、实验结果分析.1、line函数画圆的实现#include#include#include#include#include

2、.h>#definerad0.0174532925#defineNUMBER24main(){inti,r,xx[41],yy[41],x0,y0;floatt=360/40*3.14/180;intgdriver=DETECT,gmode;initgraph(&gdriver,&gmode,"");cleardevice();setbkcolor(RED);setcolor(YELLOW);x0=300;y0=250;r=200;for(i=0;i<41;i++){xx[i]=x0+r*cos(i*t);yy[i]=y0-r*sin(i*t

3、);}for(i=0;i<40;i++)line(xx[i],yy[i],xx[i+1],yy[i+1]);settextstyle(1,0,3);outtextxy(300,220,"C");line(300,250,500,250);getch();7closegraph();return0;}运行结果见文件夹:HUAYUAN2、由已有矩形四条边为直径画出四个圆的算法;#include#includevoidmain(){intgdrver=VGA,gmode=2;intx0=320,y0=24

4、0,r=60;initgraph(&gdrver,&gmode,"");/*图形模式驱动函数*/cleardevice();setcolor(2);rectangle(x0-r,y0-r,x0+r,y0+r);/*画矩形*/circle(x0,y0-r,r);/*画圆*/circle(x0,y0+r,r);circle(x0-r,y0,r);circle(x0+r,y0,r);getch();/*从键盘输入任意字符*/closegraph();}运行结果见文件夹:HUAYUAN23.生成圆弧的中点算法3.1算法思想为了生成圆弧,只需要计算出从

5、x=0到x=y分段内的像素点即可,其余的像素位置利用圆的八对称性即可得出。设圆的半径是R,从初始坐标点(0,R)开始递推,假设已计算出象素P(x,y),那么,下一个与圆弧最近的像素只能是正右方的P1(x+1,y),或右下方的P2(x+1,y-1)两者之一。令M为P1和P2的中点,易知M的坐标为(x+1,y-1/2)。显然,若M在圆内,则P1离圆弧近,应取为下一个像素;否则应取P2。判断M位置的递推公式如下:3.2程序:#include"Conio.h"#include"graphics.h"7#include"stdio.h"#include

6、"math.h"#defineclosegrclosegraph#definexo300#defineyo250#defineDELTA1.0#definemax100/*最大顶点数*/typedefstruct{intx;inty;}Point;typedefstruct{intpointNum;Point*vertices;}Polygon;voidinitgr(void)/*BGI初始化*/{intgd=DETECT,gm=0;/*和gd=VGA,gm=VGAHI是同样效果*/registerbgidriver(EGAVGA_drive

7、r);/*注册BGI驱动后可以不需要.BGI文件的支持运行*/initgraph(&gd,&gm,"");}/*控制线宽*/voidputpixels(intx,inty,intcolor,intn){inti,j;for(i=-n/2;i<=n/2;i++)for(j=-n/2;j<=n/2;j++)putpixel(x+j,y+i,color);}voidputpixelt(intx,inty,intcolor,inti){inta[8]={1,1,1,1,0,0,0,0};if(a[i%8])putpixel(x,y,color);}/

8、*画点*/voidEllipsePoints(intx,inty,intcolor){putpixel(xo+x,yo+y,color);putpixel(xo-x

当前文档最多预览五页,下载文档查看全文

此文档下载收益归作者所有

当前文档最多预览五页,下载文档查看全文
温馨提示:
1. 部分包含数学公式或PPT动画的文件,查看预览时可能会显示错乱或异常,文件下载后无此问题,请放心下载。
2. 本文档由用户上传,版权归属用户,天天文库负责整理代发布。如果您对本文档版权有争议请及时联系客服。
3. 下载前请仔细阅读文档内容,确认文档内容符合您的需求后进行下载,若出现内容与标题不符可向本站投诉处理。
4. 下载文档时可能由于网络波动等原因无法下载或下载错误,付费完成后未能成功下载的用户请联系客服处理。