画直线算法 Line drawing algorithm

2021-06-01 05:03

阅读:552

  • 过程?

    直线可以分为:水平的(斜率为零)、垂直的(斜率为无穷大),斜的(其他可能的斜率)。

    给定两个实数点,可以算出一个实数域上的直线方程。但显然此方程的解不能直接作为算法的解,它还需要再通过一个函数过滤成自然数的解。

    real = line_equation(p1, p2)
    nature = func(real)
    

    最直接的想法是每次迭代我都算出实数解,然后和上一个自然数解作比较。e.g. 当 x0

    x0 

    当然根据斜率不同还有一些符号和边界问题,暂且不表。值得注意的是,因为 realy >= y + 0.5 所以 y+1 之后是可能比 realy 大的,但是大不过 0.5 。下次再算 realy 的时候,还可能比 y 小。不过也没关系,我们就继续画在 y 上就行。


  • 评论


    亲,登录后才可以留言!