资源描述:
《最新《计算机图形学》答案 以及 算法讲解.doc》由会员上传分享,免费在线阅读,更多相关内容在教育资源-天天文库。
1、__________________________________________________(-)DDA:例:设p0(x0=1,y0=1),pp(xp=6,yp=3),由p0到pp画一直线.解:dy=yp-y0=3-1=2dx=xp-x0=6-1=5k=Dy/Dx=2/5=0.4(ROUND(k)<1)让x每次增加1x1=x0+1=1+1=2y1=y0+k=1+0.4Round(1.4)=1x2=x1+1=2+1=3y2=y1+k=1.4+0.4Round(1.8)=2x3=x2+1=3+1=4y3=y2+k=1.8+0.4Round(2
2、.2)=2x4=x3+1=4+1=5y4=y3+k=2.2+0.4Round(2.6)=3x5=x4+1=5+1=6y5=y4+k=2.6+0.4=3x123456y112233例:设p0(x0=1,y0=1),pp(xp=3,yp=4),由p0到pp画一直线.解:dy=4-1=3dx=3-1=2k=dy/dx=3/2=1.5k>11/k=2/3=0.67让y每次增加1(dy>dx)y1=y0+1=1+1=2x1=x0+1/k=1+0.67=1.67round(1.67)=2y2=y1+1=2+1=3x2=x1+1/k=1.67+0.67=2.3
3、4round(2.34)=2y3=y2+1=3+1=4x3=x2+1/k=2.34+0.67=3.01round(3.01)=3y1234x1223DDA算法:复杂度:加法+取整优点避免了y=kx+b方程中的浮点乘法,比直接用点斜式画线快收集于网络,如有侵权请联系管理员删除__________________________________________________缺点需浮点数加法及取整运算,不利于硬件实现.(2)中点画线算法:目标:消除DDA算法中的浮点运算(浮点数取整运算,不利于硬件实现;DDA算法,效率低)中点算法:用整数加法及比较代
4、替了DDA中的浮点数加法及取整运算,效率大大提高.设(x0,y0)和(x1,y1)分别为直线的两端点Dy=y1-y0,Dx=x1-x0由y=kx+B及k=Dy/DxkÎ[0,1]得y=(Dy/Dx).x+B-Dy.x+Dxy-Dx.B=0则直线一般方程为F(x,y)=-Dy.x+Dx.y-B.Dx=0a=-Dyb=Dxc=-B.Dx设(x,y)为直线上一点,将点P=(x,y+m)代入直线方程:F(x,y+m)=-Dy.x+Dx.(y+m)-B.Dx=(-Dy.x+Dx.y-B.Dx)+Dx.m=F(x,y)+Dx.m=+Dx.m因为Dx>0ifm
5、>0(即P点在直线上方)thenF(x,y+yb)>0;ifm<0(即P点在直线下方)thenF(x,y+yb)<0;Example:p0(x0=1,y0=1),pp(xp=5,yp=4)x0=1;y0=1;xp=5;yp=4;dy=yp-y0=4-1=3;dx=xp-x0=5-1=4;a=-dy=-3;b=dx=4;-3x+4y+c=0;-3+4+c=0;c=-1;-3x+4y-1=0F1(xp,yp)=-3*5+4*4-1=0;pp(x=5,y=4)F2=(xp,6)=-3*5+4*6-1=8>0;ph(x=5,y=6)F3=(xp,2)=-
6、3*5+4*2-1=-8<0;pl(x=5,y=2)例:设p0(x0=0,y0=0),pp(xp=5,yp=2),由p0到pp画一直线.解:dy=2dx=5k=2/5<1(可用以上公式)p0=(0,0)d0=-2*dy+dx=-2*2+5=1>0因为d0>0M在理想直线上方,所以下一点选取正右方E点p1=(1,0)dnew=dold-2dy=d0-2dy=1-2*2=-3<0(dold>0)收集于网络,如有侵权请联系管理员删除__________________________________________________所以下一点选取右上方N
7、E点p2=(2,1)dnew=dold-2(dy-dx)=-3-2*(2-5)=+3(dold<0)所以下一点选取正右方E点p3=(3,1)dnew=dold-2dy=+3-2*2=-1<0(dold>0)所以下一点选取右上方NE点p4=(4,2)dnew=dold-2(dy-dx)=-1-2*(2-5)=5(dold<0)所以下一点选取正右方E点p5=(5,2)clear;x0=0;y0=0;x1=5;y1=2dy=y1-y0;dx=x1-x0;d0=-2*dy+dx;incE=2*dy;incNE=2*(dy-dx);X(1)=0;Y(1)=
8、0;d=d0;D(1:x1)=0;D(1)=d0;forx=1:x1ifd<=0d=d-incNE;X(x+1)=x;Y(x+1)=Y(