2013-07-17 28 views
5

我对找到一个antialiasing算法可以在线路的任何形状(不只是直线)一起使用。Mathematica的抗混叠算法

我注意到,数学似乎有一个非常好的算法可以借鉴细纹1首或2个像素宽。我目前的最佳效果算法通常需要更多像3像素,所以我的线条比Mathematica更粗。

有谁知道什么算法Mathematica使用抗锯齿,或可以推荐可用于生成子2像素抗锯齿的线条和曲线的高品质的算法?

+0

你能不能画3个单独的行三次? – ElKamina

+0

最清晰,最简单,但稍慢的抗锯齿方法只是过采样。也就是说,以比实际显示更高的分辨率绘制线条,并将其缩小。 –

+0

我对这种方法很熟悉,Mathematica可能会使用它,但是与Mathematica相比,我所看到的例子总是没有非常好的质量。也许我只是看到了一些东西,但我怀疑他们正在使用更复杂的方法。 –

回答

3

一种最常用的算法用于绘制非混淆线是Wu's line algorithm

在此基础上,你可以很容易地绘制多边形;这个site解释了如何导出这个算法来绘制椭圆。

+0

我希望能够绘制任意形状,包括例如sin和cos(三角函数)以及更高阶的多项式。 Wu的算法主要用于直线。 –

+0

我认为同样的方法可以应用于一切。看到这篇文章提到如何画抗锯齿样条:http://stackoverflow.com/questions/4541442/drawing-aliased-pixel-perfect-1px-splines-catmull-rom-specifically。你可以使用相同的技巧来绘制其他的东西;另一种方法是用样条曲线以子像素精度逼近曲线,然后绘制样条曲线。 – Bentoy13