【问题标题】:Bresenham algorithm [duplicate]Bresenham 算法 [重复]
【发布时间】:2011-05-01 20:59:23
【问题描述】:

可能重复:
how do I create a line of arbitrary thickness using Bresenham?

如何使用 Bresenham 算法绘制超过一个像素粗的线条? 我是否必须在 x 和 y 偏移的情况下多次运行该算法?

【问题讨论】:

    标签: algorithm line pixel bresenham


    【解决方案1】:

    您可以做的一件事是使用直线的斜率进行计算,即两个正交方向上的单位偏移量。将其乘以您的厚度,并在两个端点处进行偏移。您现在有效地获得了旋转矩形的边界。然后,不要使用 Bresenham 绘制线条,而是使用快速多边形填充。

    【讨论】:

    • 好吧,多边形填充也可能使用 Bresenham ;)
    • 是的,当它走到边缘时 :)
    【解决方案2】:

    不,简单的方法是在算法产生的大于一个像素的每个 (x, y) 位置绘制一个模板,例如一张光盘。

    但这当然是低效的,因为您多次绘制相同的像素。然而,它很容易实现,并且即使是奇形怪状或多色的模板也能很好地工作。

    【讨论】:

    • 是的,但是 (a) 形状奇特的模板不是问题 (b) 透明度那种——破坏事物(除非你还想引入中间层)
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2011-06-08
    • 1970-01-01
    • 1970-01-01
    • 2021-04-15
    • 1970-01-01
    • 2015-06-10
    • 1970-01-01
    相关资源
    最近更新 更多