1 / 42
文档名称:

计算机图形学算法.ppt

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

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

分享

预览

计算机图形学算法.ppt

上传人:rovend 2016/10/2 文件大小:532 KB

下载得到文件列表

计算机图形学算法.ppt

相关文档

文档介绍

文档介绍:计算机图形学算法基础作业计算机图形学算法基础作业??DDADDA直线生成法直线生成法??中点画直线法中点画直线法??BresenhamBresenham生成直线生成直线??BresenhamBresenham画圆画圆11DDADDA直线生成法直线生成法??DDADDA算法基本原理算法基本原理??DDADDA是数字微分分析式(是数字微分分析式(Digital Differential Digital Differential AnalyzerAnalyzer)的缩写。设直线之起点为,终点)的缩写。设直线之起点为,终点为,则斜率为:为,则斜率为:??直线中的每一点坐标都可以由前一点坐标直线中的每一点坐标都可以由前一点坐标变化一个增量而得到,即表示为递归式:变化一个增量而得到,即表示为递归式:??并有关系:并有关系:22DDADDA直线生成法直线生成法??递归式的初值为直线的起点,这样,就可以用加递归式的初值为直线的起点,这样,就可以用加法来生成一条直线。法来生成一条直线。?? DDA算法实现步骤算法实现步骤??具体方法是:具体方法是:??按照直线从到的方向不同,分为按照直线从到的方向不同,分为88个象限(见图个象限(见图11)。对于方向在第)。对于方向在第1a1a象限内的直线而言,。对于象限内的直线而言,。对于方向在第方向在第1b1b象限内的直线而言,取值各不相同。象限内的直线而言,取值各不相同。33算法流程算法流程??初始化初始化??判断判断dxdx与与dydy中哪个较大当中哪个较大当|dx|>|dy||dx|>|dy|时时x1=x+1x1=x+1。。.y1=y+1/=y+1/m??重复操作重复操作44DDADDA算法程序算法程序??##include<>include<>??#include<>#include<>??#include<>#include<>??#include<>#include<>??#include<>#include<>??void dda_line(int xa,int ya,int xb,int yb,int c)void dda_line(int xa,int ya,int xb,int yb,int c)??{{??float delta_x,delta_y,x,y;float delta_x,delta_y,x,y;??int dx,dy,steps,k;int dx,dy,steps,k;??dx=xb-xa;dx=xb-xa;??dy=yb-ya;dy=yb-ya;55DDADDA算法程序算法程序??if(abs(dx)>abs(dy))if(abs(dx)>abs(dy))??steps=abs(dx);steps=abs(dx);??else steps=abs(dy);else steps=abs(dy);??delta_x=(float)dx/(float)steps;delta_x=(float)dx/(float)steps;??delta_y=(float)dy/(float)steps;delta_y=(float)dy/(float)steps;??x=xa;x=xa;??y=ya;y=ya;??putpixel(x,y,c);putpixel(x,y,c);??for(k=1;k<=steps;k++)for(k=1;k<=steps;k++)??{{??x+=delta_x;x+=delta_x;??y+=delta_y;y+=delta_y;66DDADDA算法程序算法程序??putpixel(x,y,c);putpixel(x,y,c);??}}??}}??void main()void main()??{{??int a,b,c,d,e;int a,b,c,d,e;??int gdriver=DETECT,gmode,errorcode;int gdriver=DETECT,gmode,errorcode;??char msg[80];char msg[80];??initgraph(&gdriver,&gmode,"");initgraph(&gdriver,&gmode,"");??errorcode=graphresult();errorcode=graphresult();??if (errorcode != gr0k)if (errorcode != gr0k)??{{77DDADDA算法程序算法程序??printf("Graphics error:%s\n",gra