0<k<1时 Bresenham算法的算法步骤为: 1输入直线的两端点Pxoy0)和P1(x1y1) 2计算初始值△x、△y、d=0.5-k、xx0、y=y0; 3绘制点(xy)。判断d的符号 若d<0,则(xy)更新为(x+12y+1),d更新为d+1-k; 否则(xy)更新为(x+1,y),d更新为dk 4.当直线没有画完时,重复步骤3。否则结束 2021/2/21 华中理工大学计算机学院陆枫 16 99-7
2021/2/21 华中理工大学计算机学院 陆枫 99-7 16 0≤k≤1时Bresenham算法的算法步骤为: 1.输入直线的两端点P0 (x0 ,y0 )和P1 (x1 ,y1 )。 2.计算初始值△x、△y、d=0.5-k、x=x0、y=y0; 3.绘制点(x,y)。判断d的符号; 若d<0,则(x,y)更新为(x+1,y+1),d更新为d+1-k; 否则(x,y)更新为(x+1,y),d更新为d-k。 4.当直线没有画完时,重复步骤3。否则结束
改进:用2d△x代替d 1输入直线的两端点PQx0y)和P(x1y1) 2计算初始值△x、△y、Ga=△x2△y)x=xy=y 3绘制点(Xy)。判断d的符号。 若d<0,则(xy)更新为(x+1,y+1),d更新为 d+2△x-2△y 否则(xy)更新为X+1y),d更新为d-2△y 4当直线没有画完时,重复步骤3。否则结束 程序 2021/2/21 华中理工大学计算机学院陆枫 17 99-7
2021/2/21 华中理工大学计算机学院 陆枫 99-7 17 改进:用2d△x代替d 1.输入直线的两端点P0 (x0 ,y0 )和P1 (x1 ,y1 )。 2.计算初始值△x、△y、d=△x-2△y、x=x0、y=y0。 3.绘制点(x,y)。判断d的符号。 若d<0,则(x,y)更新为(x+1,y+1),d更新为 d+2△x-2△y; 否则(x,y)更新为(x+1,y), d更新为d-2△y。 4.当直线没有画完时,重复步骤3。否则结束。 程序
51.3改进的B bresenham算法 假定直线段的0<k<1 基本原理: d d¨ d kid 图5-8改进的 Brensemham算法绘制直线的原理 2021/2/21 华中理工大学计算机学院陆枫 18 99-7
2021/2/21 华中理工大学计算机学院 陆枫 99-7 18 5.1.3 改进的Bresenham算法 假定直线段的0≤k≤1 基本原理: 图5-8 改进的Brensemham算法绘制直线的原理 d d d d k k k k k
41=x+1 ÷小y+1(d>0.5) 1(d≤05) 误差项的计算 初 =0 每走一步:d=d+k 旦方向上走了一步,d=d-1 2021/2/21 华中理工大学计算机学院陆枫 19 99-7
2021/2/21 华中理工大学计算机学院 陆枫 99-7 19 + = = + + + (d 0.5) 1 (d 0.5) 1 1 1 i i i i i y y y x x 误差项的计算 • d初=0, • 每走一步:d=d+k • 一旦y方向上走了一步,d=d-1
算法步骤: 1输入直线的两端点PQx0y0)和P(x1y1)e 2计算初始值△x、△yd=0、xx0、y=y0 3绘制点(xy) 4d更新为d+k,判断d的符号。若d0.5,则(xy)更 新为(x+1y+1,同时将d更新为d1;否则(xy)更 新为(x+12y) 5当直线没有画完时,重复步骤3和4。否则结束 2021/2/21 华中理工大学计算机学院陆枫 20 99-7
2021/2/21 华中理工大学计算机学院 陆枫 99-7 20 算法步骤: 1.输入直线的两端点P0 (x0 ,y0 )和P1 (x1 ,y1 )。 2.计算初始值△x、△y、d=0、x=x0、y=y0。 3.绘制点(x,y)。 4.d更新为d+k,判断d的符号。若d>0.5,则(x,y)更 新为(x+1,y+1),同时将d更新为d-1;否则(x,y)更 新为(x+1,y)。 5.当直线没有画完时,重复步骤3和4。否则结束