【问题标题】:Mathematica antialiasing algorithmMathematica 抗锯齿算法
【发布时间】:2013-07-17 22:19:03
【问题描述】:

我有兴趣找到一种antialiasing 算法,该算法可用于任何形状的线(不仅仅是直线)。

我注意到 Mathematica 似乎有一个非常好的算法,可以绘制 1 或 2 像素宽的细线。我当前的尽力而为算法通常需要 3 个像素,所以我的线条比 Mathematica 的要粗一些。

有人知道 Mathematica 使用什么算法进行抗锯齿,或者可以推荐一种高质量的算法来生成亚 2 像素的抗锯齿直线和曲线吗?

【问题讨论】:

  • 你不能画 3 条单独的线 3 次吗?
  • 最干净、最简单但有点慢的抗锯齿方法就是过采样。也就是说,以比实际显示更高的分辨率绘制线条,然后按比例缩小。
  • 我对这种方法很熟悉,Mathematica 也有可能使用它,但是与 Mathematica 相比,我所看到的示例似乎一直没有很好的质量。也许我只是看到一些东西,但我怀疑他们使用的是更复杂的方法。
  • 我对手动过采样没有太多经验,但请注意many 有不同的方法来重新缩放图像;您所寻求的质量很可能可以通过不同的重采样算法或filter 来获得。

标签: algorithm graphics wolfram-mathematica antialiasing


【解决方案1】:

绘制无锯齿线最常用的算法之一是Wu's line algorithm。

在此基础上,您可以轻松绘制多边形;这个site 解释了如何推导出这个算法来绘制椭圆。

【讨论】:

  • 我希望能够绘制任意形状,包括例如 sin 和 cos(三角函数)以及高阶多项式。 Wu 的算法主要针对直线。
  • 我认为同样的方法可以应用于任何事情。请参阅这篇文章,其中提到了如何绘制抗锯齿样条曲线:stackoverflow.com/questions/4541442/…。您可以使用相同的技巧来绘制其他所有内容;另一种方法是用样条线以亚像素精度近似曲线,然后绘制样条线。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2014-02-18
  • 2010-10-03
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多