在时域中绘制一条线

时间:2017-01-11 15:51:37

标签: algorithm

我正在设计硬件,它应该在特定的时钟周期范围内逐渐将变量的值从一个值增加到另一个值 - 以图形方式,您可以将其视为绘制连续线。

我使用了Bresenham的算法,但发现如果时间小于变量值范围,则该算法不适用,因为时钟周期轴不能与变量的值轴进行物理交换 - 时间总是连续的。

我正在寻求建议

  • 当不能交换轴时,Bresenham可以以某种方式修改为在八分之一的上述情况下工作;
  • 当x-range小于y-range时,可以使用哪种其他算法;
  • 也许还有其他解决方案的方法和另外一种涵盖两种情况的算法?

限制:不允许除法,以及FP仿真。允许乘法(以及加法和减法)。

更新:不允许使用2 ^ n以外的数字模数。只有整数数学(无符号和/或有符号)。算法设置应该需要一到两个周期。

1 个答案:

答案 0 :(得分:3)

Bresenham的算法很容易适应这种情况。

如果y范围(dy)大于x范围(dx),则可以将dy/dx划分为小数和迭代部分:

  • 使用Bresenham算法计算从(x,y)(x+dx,y+dy%dx)
  • 的行
  • 添加(x-dx)*floor(dy/dx),即在每floor(dy/dx)次增量上累积额外x