资源描述:
《图形学实验指导书.doc》由会员上传分享,免费在线阅读,更多相关内容在应用文档-天天文库。
1、图形学实验指导书 实验一DDADA画线算法 一、实验学时2 二、实验类型验证性实验 三、实验要求和目的初步了解Tc下画图基本程序结构。 初步了解DDA画线算法的思想和基本方法。 四、实验内容DDA画线算法画一段直线1.算法思路1.算法描述设直线方程为bmxy??,1221121212,xxyxyxbxxyym??????对于直线,其数值微分是)()1()()1(ixixiyiyxym????????,由上式得,y(i+1)=y(i)+m(x(i+1)-x(i)),于是知,使x(i)增1,即x(i+1)=x(i)+1时,y(i+1)=y(i)+m,为画线精确
2、,应使相邻的画出点的坐标值相差最大值为1,这样可以得到画线段的数值微分分析器(DigitalDifferentialAnalyzer,简称DDA),算法如下2.C程序代码#include#include#includevoidDDALine(intx1,inty1,intx2,inty2,intcolor){doubledx,dy,e,x,y,i;dx=x2-x1;dy=y2-y1;e=(fabs(dx)>fabs(dy))?fabs(dx):fabs(dy);dx/=e;dy/=e;x=x1;y=y1;for(i=1;i<=e;i++){putpixel((int)
3、(x+0.5),(int)(y+0.5),color);x+=dx;y+=dy;}}voidmain(){intdriver=DETECT;intgmode;intx1,y1,x2,y2,color;printf("pleaseinputx1,y1,y1,y2,color");scanf("%d,%d,%d,%d,%d",&x1,&y1,&x2,&y2,&color);initgraph(&driver,&gmode,"");DDALine(x1,y1,x2,y2,color);getch();closegraph();}实验二mBresenham画线算法 一、
4、实验学时2 二、实验类型验证性实验 三、实验要求和目的掌握中点画线算法的思想和基本方法 四、实验内容用用Bresenham画线算法画直线,并完善算法功能,使之适应更广1.算法思路假定直线段的斜率0≤m≤1,且x2>x1,122)1 (2)1()1()1()1(2121????????????????????byxmddbxmyyydybxmyydiiiiiiii????????若差为正,即21dd?,下一个象素应取)1,1(++iiyx??;若为负,即21dd?,下一个象素应取),1(iiyx??+。 引入新的判别量picyxxybyxxxyyxddxpii
5、iii??????????????????????22)]122)1(2[)(121221其中)12(2;;1212??????????bxycyyxx,又因为11???iixx??,所以有)(211iiiiyxypp?????????0?ip应取11+iiyy????,此时)(21xyppii??????pi<0,应取iiyy????1,此时ypii????21初始值的确定bxyyxxxyii??????111,??xycbxxxypxy?????????????2)(221112.C程序代码#include#include#includevoidBresenham
6、Line(intx1,inty1,intx2,inty2,intcolor){intx,y,dx,dy,p;x=x1;y=y1;dx=x2-x1;dy=y2-y1;p=2*dy-dx;for(x=1;x<=x2;x++){putpixel(x,y,color);if(p>=0){y++;p+=2*(dy-dx);}else{p+=2*dy;}}}voidmain(){intdriver=DETECT;intgmode;intx1,y1,x2,y2,color;printf("pleaseinputx1,y1,x2,y2,color");scanf("%d,%d,%d,
7、%d,%d",&x1,&y1,&x2,&y2,&color);initgraph(&driver,&gmode,"");BresenhamLine(x1,y1,x2,y2,color);getch();closegraph();}实验三中点画圆算法 一、实验学时2 二、实验类型验证性实验 三、实验要求和目的掌握中点画圆算法的基本思想编写中点画圆的基本函数并尽量完善 四、实验内容中点画圆算法画圆1.算法描述构造函数222),(RyxyxF???对于圆上的点,有F(x,y)=0;对于圆外的点,有F(x,y)>0;对于圆内的点,有F(x,y)<0。