正在加载图片...
第四章:P215 1、将中点画线算法推广以便能画出任意斜率的直线 算法设计: (1)输入直线的起点坐标P(X,yo)和终点坐标P1Xx1y) (2)定义直线当前点坐标ⅹ和y,定义中点偏差判别式d、直线斜率k、像素点颜色 (3)X=x0,y=yo计算d=0.5-kk=(y1yo)/(x1-×),rgb=RGB=(0,0255) (4)绘制点(xy),判断d的符号,若d<0,则x,y)更新为(x+1,y+1),d更新为d+1-k, 否则Xx,y)更新为(x+1,y),d更新为d-k (5)如果当前点ⅹ小于(X1,重复步骤(4),否则结束。 程序主要代码 MidPointLine(Xo, yo, x1, y1,color) int a, b, delta1, delta2, d, x,y: d=2*a-b; delta1=2a: delta2=2(a+b) y= yo if(a<b) drawpixel(x, y, color): drawpixel(y, x, color) If (d<O) X++ y d+= delta2 Else D+=delta1 Putpⅸe(x, y, color)第四章:P215 1、将中点画线算法推广以便能画出任意斜率的直线 算法设计: (1) 输入直线的起点坐标 P0(x0,y0)和终点坐标 P1(x1,y1). (2) 定义直线当前点坐标 x 和 y,定义中点偏差判别式 d、直线斜率 k、像素点颜色 rgb (3) x= x0,y= y0 计算 d=0.5-k,k=( y1-y0)/(x1-x0), rgb=RGB=(0,0,255). (4) 绘制点(x,y),判断 d 的符号,若 d<0,则(x, y)更新为(x+1,y+1),d 更新为 d+1-k, 否则(x, y)更新为(x+1,y),d 更新为 d-k. (5) 如果当前点 x 小于(x1,重复步骤(4),否则结束。 程序主要代码: MidPointLine(x0,y0,x1,y1,color) { int a,b,delta1,delta2,d,x,y; a = y0 – y1; b = x1 – x0; d = 2*a – b; delta1 = 2 * a; delta2 = 2 * (a+b); x = x0; y = y0; if (a<b) drawpixel(x, y, color); else drawpixel(y,x,color); while (x > x1) { If (d<0) { x++; y++; d+ = delta2; } Else { X++; D+=delta1; } Putpixel(x,y,color); }
向下翻页>>
©2008-现在 cucdc.com 高等教育资讯网 版权所有