Algorithm 行(x1,y1,x2,y2)仅使用像素(x,y)示例是否需要?

Algorithm 行(x1,y1,x2,y2)仅使用像素(x,y)示例是否需要?,algorithm,user-interface,graphics,open-source,Algorithm,User Interface,Graphics,Open Source,我需要使用像素(x,y)实现行(x1,y1,x2,y2)。 最好没有浮点数。 有任何语言的例子吗?您可以实现。下面是一个伪代码: 功能行(x0,y0,x1,y1) dx:=abs(x1-x0) dy:=abs(y1-y0) 如果x0

我需要使用像素(x,y)实现行(x1,y1,x2,y2)。 最好没有浮点数。 有任何语言的例子吗?

您可以实现。下面是一个伪代码:

功能行(x0,y0,x1,y1)
dx:=abs(x1-x0)
dy:=abs(y1-y0)
如果x0-dy,则
err:=err-dy
x0:=x0+sx
如果结束
如果e2
通过将与错误相关的任何内容乘以deltax,并将错误初始设置为deltax的一半,可以避免浮点运算。
function line(x0, y0, x1, y1)
   dx := abs(x1-x0)
   dy := abs(y1-y0) 
   if x0 < x1 then sx := 1 else sx := -1
   if y0 < y1 then sy := 1 else sy := -1
   err := dx-dy

   loop
     setPixel(x0,y0)
     if x0 = x1 and y0 = y1 exit loop
     e2 := 2*err
     if e2 > -dy then 
       err := err - dy
       x0 := x0 + sx
     end if
     if e2 <  dx then 
       err := err + dx
       y0 := y0 + sy 
     end if
   end loop