布雷森汉姆算法

Bresenham's algorithm

本文关键字:算法 布雷森      更新时间:2023-10-16

如何找到绘制抛物线、正弦曲线、钟形曲线等不同函数的决策参数?请告诉我为什么我们有时会乘以常数的方法?例如

  1. 在椭圆的情况下,上半部分和下半部分区域的p=a^2(d1-d2),p=b^2(d1-d2)
    其中a、b常数
  2. 在直线的情况下,p=deltax(d1-d2),其中p是决策参数d1,d2是
    距离,deltax是常数,等于xend-xstart

为什么不只取(d1-d2)作为参数

由OP声明的Bresenham算法有点错误,但我假设如下。

如果不是为了初始化决策参数,决策参数可以调整d1 - d2,而不是像您建议的那样按某个常数缩放。它通常不能通过该常量进行扩展。

// code from http://en.wikipedia.org/wiki/Bresenham's_line_algorithm
plotLine(x0,y0, x1,y1)
  dx=x1-x0
  dy=y1-y0
  D = 2*dy - dx   // Not scalable by 2
  plot(x0,y0)
  y=y0
  for x from x0+1 to x1
    if D > 0
      y = y+1
      plot(x,y)
      D = D + (2*dy-2*dx)  // Scalable by 2
    else
      plot(x,y)
      D = D + (2*dy)  // Scalable by 2