直线算法

合集下载
  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
直线方程如下: 直线方程如下:
yi+1 = yi + k(xi+1 − xi ) = yi + k
k = Dy ne: P0(0, 0), P1(5,2) k=dy/dx=0.4 3 x y e 2 0 0 -0.5 1 0 -0.1 1 2 1 0.3 0 1 2 3 4 5 3 1 -0.3 4 2 0.1 5 2 -0.5 大于零,y加一,小于零,不变
为能确定B在A点上面或下面,令
Yi+1,r A Yi,r D B C
ε(xi+1)=yi+1-yi,r-0.5 (2) yi+1=yi+k (1)
若B在A的下面,则有ε(xi+1)<0,反之,则 ε(xi+1)>0。由图可知
xi Xi+1 ε(x)的几何意义
yi+1,r=yi,r+1,若ε(xi+1)≥0 yi+1,r=yi,r, 若ε(xi+1)≤0
Bresenham算法
Bresenham算法设计
◇考虑在第一象限,斜率 k<1 的直线, ◇假设起始位置像素落在直线上,d = 0 ◇沿横坐标每前进一步,d 的值增加量为k, 即d = d + k ◇一旦d > 1,即令d = d-1, 保证 d 介于0与 1之间 ◇当d > = 0.5 时, 直线接近右上方像素,d < 0.5 时,直 d d 线接近右方像素 ◇为便于判别,令 e = d - 0.5, 则当e >= 0, 取右上方 像素,当 e < 0, 取右方像素 ◇ e 的初始值为 -0.5。y在递增时,e在取值范围一般介 于-0.5与0.5之间
(3)
由式(2)和式(3)可得到 ε(xi+2)=yi+2 - yi+1,r - 0.5 =yi+1 + k - yi+1,r - 0.5 (4) ε(xi+2)= yi+1 – yi,r -0.5 + k - 1, 当ε(xi+1)≥0 = ε(xi+1) + k -1 ε(xi+2)= yi+1 - yir -0.5 + k, = ε(xi+1) + k , 当ε(xi+1)≤0 由式(1)和式(2)可得到 ε(x2)= k - 0.5 (5)
yi+1= kxi+1+b ( |k| = kxi+b+k∆x = yi+k∆x 当∆x =1;yi+1 = yi+k
≤1 )
即:当x每递增1,y递增k(即直线斜率);
设图中xi列上已用(xi,yi,r)作为表示直线的点,又 设B点是直线上的点,其坐标为(xi+1,yi+1),显然下 一个表示直线的点( xi+1,yi+1,r)只能从图中的C或者 D点中去选。设A为CD边的中点。 若B在A点上面 则应取D点作为( xi+1,yi+1,r),否则应取C点。
Bresenham算法 ——绘制直线
Bresenham算法
Bresenham算法基本思想
过各行各列像素中心构造一组虚拟网格线。按直线从起点 到终点的顺序计算直线与各垂直网格线的交点,然后根 据误差项的符号确定该列像素中与此交点最近的像素。
d d d d
Bresenham画线算法
令 k=∆y/∆x,就0≤k≤1的情况来说明 Bresenham算法。 yi+1=yi+k (1) 由于k不一定是整数,由此式求出的yi也 不一定是整数,因此要用坐标为(xi,yi,r) 的象素来表示直线上的点,其中yi,r表示 最靠近yi的整数。
相关文档
最新文档