由于在整个算法中只考虑d的符号,而且 d的增量都是整数,只是起初值包含小数 因此,在算法中可以用2d代替d,从而去 掉小数。 ●d0=2d0=2a+b ●d1=2d1=2(d+a)=2d+2a,即△d=2a ●d2=2d2=2(d+a+b)=2d+2a+2b, 即△d=2(a+b) ●因此,算法中第3行可以替换为 d=2*a+b; delta1=2 a; delta2=2 (a+b);
⚫ 由于在整个算法中只考虑d的符号,而且 d的增量都是整数,只是起初值包含小数, 因此,在算法中可以用2d代替d,从而去 掉小数。 ⚫ d0’=2d0=2a+b ⚫ d1’=2d1=2(d+a)=2d+2a,即△d =2a ⚫ d2’=2d2=2(d+a+b)=2d+2a+2b, ⚫ 即△d =2(a+b) ⚫ 因此,算法中第3行可以替换为 ⚫ d=2*a+b; delta1=2*a; delta2=2*(a+b);
中点画线法示图
中点画线法示图
4.1.3 Bresenham画线算法 1算法原理 ● Bresenham算法是计算机图形学领域中使用 最广泛的直线生成技术。该算法适合于光栅图 形显示器、数字化仪设计等设备,其原理描述 如下: ● Bresenham也是通过在每列像素中确定与理 想直线最近的像素来进行支线的扫描转换的。 通过各行、各列像素中心构造一组虚拟网格线, 按直线从起点到终点的顺序计算直线与各垂直 网格线的交点,然后确定该列像素中与此交点 最近的像素
4.1.3 Bresenham画线算法 ⚫ 1.算法原理 ⚫ Bresenham算法是计算机图形学领域中使用 最广泛的直线生成技术。该算法适合于光栅图 形显示器、数字化仪设计等设备,其原理描述 如下: ⚫ Bresenham也是通过在每列像素中确定与理 想直线最近的像素来进行支线的扫描转换的。 通过各行、各列像素中心构造一组虚拟网格线, 按直线从起点到终点的顺序计算直线与各垂直 网格线的交点,然后确定该列像素中与此交点 最近的像素
● Bresenham算法与DDA算法类似,只是 不再采用四舍五入的办法,而是巧妙地 采用了增量计算,使得对于每一列,只 要检查一个误差项的符号,就可以确定 该列所求的像素
⚫ Bresenham算法与DDA算法类似,只是 不再采用四舍五入的办法,而是巧妙地 采用了增量计算,使得对于每一列,只 要检查一个误差项的符号,就可以确定 该列所求的像素
2.递推公式 设直线的起始点为(x0,y0),终点为 (x1,y1),则直线的斜率 k=△y△x=(y1-y0)/(x1-x0) 考虑0≤k≤1的情况。 在起始点(x0,y0),误差项初值d=0 ●确定下一个像素点时,当x递增1时,误差项 ●d的值增加一个斜率k的值,即 ded+k
2.递推公式 ⚫ 设 直 线 的 起 始 点 为 ( x0,y0 ) , 终点为 (x1,y1),则直线的斜率 ⚫ k=△y/△x=(y1-y0)/(x1-x0) ⚫ 考虑0≤k≤1的情况。 ⚫ 在起始点(x0,y0),误差项初值d=0; ⚫ 确定下一个像素点时,当x递增1时,误差项 ⚫ d的值增加一个斜率k的值,即 ⚫ d=d+k