图形学实验报告格式.doc

图形学实验报告格式.doc

ID:59169914

大小:209.00 KB

页数:38页

时间:2020-10-30

图形学实验报告格式.doc_第1页
图形学实验报告格式.doc_第2页
图形学实验报告格式.doc_第3页
图形学实验报告格式.doc_第4页
图形学实验报告格式.doc_第5页
资源描述:

《图形学实验报告格式.doc》由会员上传分享,免费在线阅读,更多相关内容在教育资源-天天文库

1、实验一直线、圆弧及曲线的生成算法一、实验目的1、几种直线生成算法的比较,特别掌握用Bresenham直线生成算法。2、几种圆弧生成算法的比较,掌握Bresenham圆弧生成算法。3、掌握用像素点法直接生成其它曲线的方法。二、基本要求1、用不同的生成算法在屏幕上绘制出直线的图形,对不同的算法可设置不同的线形或颜色表示区别。2、用Bresenham生成算法在屏幕上绘制出圆弧的图形,用动画的方式表演图形的生成。三、算法提示1、有关直线生成算法有:DDA(数值微分)直线算法、逐点比较法、直线Bresenham生成算法。直线Bresenham生成算法思想如下(第一象限,且斜率k<1的情况图2-1a中

2、的1a):1)画点(x1,y1),dx=x2-x1,dy=y2-y1,计算误差初值P1=2dy-dx,i=1;2)求直线下一点位置xi+1=xi+1如果Pi>0,则yi+1=yi+1,否则yi+1=yi;3)画点(xi+1,yi+1);4)求下一个误差Pi+1点,如果Pi>0,则Pi+1=Pi+2dy-2dx,否则Pi+1=Pi+2dy;5)i=i+1,如果i

3、并适于用硬件实现。对于图2-1a中的2a,只需将xi+1=xi+1改为xi+1=xi-1。对于图2-1a中的1b,斜率k>1的情况,可交换变量x和y,y每次长1个单位。对Pi进行判断,xi+1=xi或xi+1=xi+1。2、有关圆弧生成算法有:逐点比较法、DDA(数值微分)直线算法、圆的Bresenham生成算法。圆的生成算法一般将圆划分为8等份,只需计算(900,450)的八分之一圆弧,其它用对称法求得(参见图2-1b)。Bresenham生成算法思想如下(第一象限,且斜率k<1的情况):1)计算误差初值P1=3-2r,i=1,画点(0,r);2)求下一个光栅点位置xi+1=xi+1如果

4、Pi<0,则yi+1=yi,否则yi+1=yi-1;3)画点(xi+1,yi+1);4)求下一个误差Pi+1点,如果Pi<0,则Pi+1=Pi+2xi+6,否则Pi+1=Pi+4(xi-yi)+10;5)i=i+1,如果x=y则结束操作,否则转步骤2。圆Bresenham算法的算式简单,只需做加减法和乘4运算3.对屏幕布局的考虑适当选取坐标,将屏幕分成几个区域性,在每个区域内实现一种算法,生成一个图形。也可用delay实现延时实现动画。四、上机作业题及思考题1、用正负法编程绘制圆弧2、用直线Bresenham生成算法绘制直线。3、用Bresenham生成算法绘制圆。五、参考源程序1、数值微

5、分法生成斜率小于90的直线/*DDAline数值微分法生成斜率小于90的直线*/#include#include"display.h"main(){intxo,yo,xa,ya,i,j;intdx,dy,c;floatddx,ddy,x,y;Initialize();printf("inputstartx,y(x=0-640,y=0-480)");scanf("%d,%d",&xo,&yo);/*输入直线的两个点*/printf("xa:%d--639",xo);scanf("%d",&xa);printf("ya:0..%d",yo);scanf("%d",&ya);

6、printf("redlineissystem,yellowiscreate");if(xa>=xo&&xa<=639&&ya>=0&&ya<=yo)/*数值微分法生成直线算法*/{outtextxy(xo,yo+5,"o");outtextxy(xa,ya-10,"a");dx=xa-xo;dy=yo-ya;if(dx>dy)c=dx;elsec=dy;ddx=dx*1.0/c;ddy=dy*1.0/c;x=xo*1.0;y=yo*1.0;setcolor(12);line(xo,yo,xa,ya);getch();while(c>=0){i=round(x);j=round(y);

7、putpixel(i,j,14);x=x+ddx;y=y-ddy;c=c-1;}}elseprintf("dataerror");getch();closegraph();}intround(ff)floatff;{intk;if((ff-(int)ff)>0.5)k=(int)ff+1;elsek=(int)ff;k=(int)ff;return(k);}2、逐点插补法生成圆弧源程序/*STEPCIRCLE逐点插补法生

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

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

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