文档详情

2015计算机图形学算法.doc

发布:2016-11-24约小于1千字共5页下载文档
文本预览下载声明
DDA算法 目录 1算法思想 2算法描述 3代码实例 算法思想 直线的基本微分方程为:设直线通过点 和,则直线方程可表示为: 如果已知第点的坐标,可用步长 和得到第点的坐标为: 或 如下图: 将算得的直线上每个点的当前坐标,按四舍五入得到光栅点的位置算法描述 时,实现代码: voidDDALine(intx0,inty0,intx1,inty1,intcolor) { divclass=text_pic layoutrightstyle=width: 220px; padding-left: 20px;data-layout intx;floatdx,dy,y,k; dx=x1-x0,dy=y1-y0; k=dy/dx,y=y0; for(x=x0;x=x1;x++) { Drawpixel(x,int(y+0.5),color); y=y+k; } } 当时,实现代码: voidDDALine(intx0,inty0,intx1,inty1,intcolor) { inty;floatdx,dy,x,k; dx=x1-x0,dy=y1-y0; k=dx/dy,x=x0; for(y=y0;y=y1;y++) { Drawpixel(int(x+0.5),y,color); x=x+k; } } 任意斜率代码实现如下: ? 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 voidDDALine(intx0,inty0,intx1,inty1,intcolor) { intdx,dy,n,k;floatxinc,yinc,x,y; dx=x1-x0;dy=y1-y0; if(abs(dx)abs(dy)) n=abs(dx); else n=abs(dy); xinc=(float)dx/n; yinc=(float)dy/n; x=(float)x0;y=(float)y0; for(k=1;k=n;k++) { Drawpixel(int(x+0.5),int(y+0.5),color); x+=xinc; y+=yinc; } } 3、代码实例编辑 参考资料
显示全部
相似文档