预览加载中,请您耐心等待几秒...
1/10
2/10
3/10
4/10
5/10
6/10
7/10
8/10
9/10
10/10
亲,该文档总共13页,到这已经超出免费预览范围,如果喜欢就直接下载吧~
如果您无法下载资料,请参考说明:
1、部分资料下载需要金币,请确保您的账户上有足够的金币
2、已购买过的文档,再次下载不重复扣费
3、资料包下载后请先用软件解压,在使用对应软件打开
实验一直线段的生成算法3.26-4.9一、实验目的及要求1、掌握Bresenham算法的原理;2、熟悉Bresenham算法的具体c语言实现;3、掌握dda算法的原理;4、熟悉dda算法的具体c语言实现。二、实验学时4学时三、实验任务Bresenham算法的c语言实现DDA算法的c语言实现四、实验重点、难点对Bresenham算法的原理以及c语言程序的具体实现(一)Bresenham算法的实现#include"stdafx.h"#include"graphics.h"#include"stdlib.h"#include"stdio.h"#include"conio.h"voidBresenham_line(intx1,inty1,intx2,inty2,intvalue){intx,y,s1,s2,increx,increy,temp,interchange;inte,i;x=x1;y=y1;if(x2-x1>0){s1=1;}else{s1=-1;}if(y2-y1>0){s2=1;}else{s2=-1;}increx=abs(x2-x1);increy=abs(y2-y1);if(increy>increx){temp=increx;increx=increy;increy=temp;interchange=1;}elseinterchange=0;e=2*increy-increx;for(i=1;i<=increx;i++){putpixel(x,y,value);if(e>=0){if(interchange=1)x=x+s1;elsey=y+s2;e=e-2*increx;}if(interchange=1)y=y+s2;elsex=x+s1;e=e+2*increy;}}voidmain(){intgdriver=DETECT,gmode,errorcode;initgraph(&gdriver,&gmode,"");Bresenham_line(100,100,300,300,5);getch();closegraph();}(二)DDA算法的实现#include"stdafx.h"#include"graphics.h"#include"stdlib.h"#include"stdio.h"#include"math.h"#include"conio.h"voidDDAline(intx1,inty1,intx2,inty2,intcolor){floatincrex,increy,x,y,length;inti;if(abs(x2-x1)>abs(y2-y1))length=abs(x2-x1);elselength=abs(y2-y1);increx=(x2-x1)/length;increy=(y2-y1)/length;x=x1;y=y1;for(i=1;i<=length;i++){putpixel(x,y,1);x=x+increx;y=y+increy;}}voidmain(){intgdriver=DETECT,gmode;initgraph(&gdriver,&gmode,"");DDAline(0,100,100,0,5);getch();closegraph();}六、注意事项应该根据算法原理来编写算法过程。实验二自行车动画编程4.16一、实验目的及要求1、掌握线段和圆等图形的实现原理;2、掌握图形动画的实现方法。二、实验学时2学时三、实验任务自行车动画实现的c语言程序四、实验重点、难点理解线段和圆等图形并将其编写成程序五、操作要点算法的基本过程:在图形模式下,图形存取有着重要的作用,这也是图形动画的基础。图形存取的基本原理是:反屏幕上某个区域的信息存入一个缓冲区,然后在另一个区域把它的内容显示出来。原理见课本71-73面。具体算法设计可以参考72页的算法过程。六、注意事项能够应用原理进行程序编写。#include"stdlib.h"#include"graphics.h"#include"conio.h"#include"stdio.h"voidmain(){void*w;