2013-07-17 16 views
5

私はantialiasingアルゴリズムを見つけたいと思っています。このアルゴリズムは直線(直線)だけでなく、どのような形状でも使用できます。Mathematicaのアンチエイリアスアルゴリズム

私は、Mathematicaが非常に優れたアルゴリズムを持っているように見え、1〜2ピクセル幅の細い線を描くことができます。私の現在のベストエフォートアルゴリズムは一般に3ピクセル以上のものを必要とするので、私の線はMathematicaの線よりやや厚い。

Mathematicaがアンチエイリアスに使用するアルゴリズムを知っている人はいないか、またはサブ2ピクセルのアンチエイリアス処理された線や曲線を生成するために使用できる高品質のアルゴリズムを推奨できますか?

+0

3つの別々の線を3回描くことはできませんか? – ElKamina

+0

最もクリーンでシンプルですが、やや遅いアンチエイリアス方法はオーバーサンプリングです。つまり、実際のディスプレイよりも高い解像度で線を引いて、それを縮小します。 –

+0

私はこの方法に精通しており、Mathematicaがそれを使用する可能性がありますが、私が見た例はMathematicaに比べて常に良い品質を保っているようには見えません。たぶん私は物事を見ているだけですが、私の疑惑はより洗練されたアプローチを使用していることです。 –

答えて

3

白抜き線を描画するために最もよく使用されるアルゴリズムの1つは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