将多条消除锯齿的线连接在一起

问题描述:

我在wiki-pedia和其他地方从伪代码实现/复制了wu线算法。将多条消除锯齿的线连接在一起

绘制正弦波时,它会在线从y占优势变为x占优势(或相反)的地方出现故障。 (因为它看起来很可怕,我不需要他们为我的目的,我没有抄端点代码。)

有谁知道这个问题的解决方案?如果没有,我将自己修改算法以使其运行。我只是好奇,如果别人遇到这个问题,并知道如何解决它。是否可以实现,而不是全局意识到彼此?或者这就是为什么绘制API的工具moveto和lineto功能?

The pseudo code

+1

这是吴氏算法的一个假象。它可以是水平像素或垂直像素的别名。因此,当你将它称为“显性”到“显性”或“vv”时,你会看到线条变化时的效果。由于算法的本质,在wu框架内没有办法解决这个问题。 – Howard 2011-04-20 16:34:37

+0

我想要做的就是画出一些可以工作的线条,看起来不像****。任何人推荐另一种算法或方法? – 2011-04-20 17:07:57

+0

我想我将不得不跟踪斜率并相应地调整算法。 – 2011-04-20 17:13:43

我只是想跟进并关闭它。我以为我已经从网站上发布的算法中删除了端点代码。但是,我犯了一个错误,并没有删除所有这些,所以这就是线路断线的原因。下面是最终的结果:

如果你仔细观察的话,你可以看到强度跳了一下,当线被Y型显性到显性X,反之亦然改变。这也是因为该线不到一个像素长。我想以更高的分辨率画出一条线,然后下抽样会产生像Guy Sirton所建议的更高质量的结果。但是这对我的目的来说已经足够了。

如果性能是不是一个大问题,你可以采取一个比较幼稚的方法来绘制反锯齿线,如:

  • 绘制在一个更高的分辨率网格线(例如某个整数你的目标分辨率是多个) - 你需要调整它们的厚度。
  • 将每个n×m像素的块转换为单个像素(例如,通过平均RGB值。

根据您正在开发的语言或操作系统,可能会内置功能来简化此操作。

或者,您可以计算每行像素的哪部分被行覆盖(通过将像素平方与行相交)来计算像素值,使像素强度相对于行覆盖的像素区域部分。

+0

吴线算法已经这样做。问题在于分数点的绘制线。有一个四舍五入的问题。我正在做。 – 2011-04-24 00:21:44