2013-07-17 36 views
5

antialiasing algoritmasını bulmak istiyorum. Bu, herhangi bir şekildeki bir çizgi üzerinde kullanılabilir (sadece düz çizgilerle değil).Mathematica antialiasing algoritması

Mathematica'nın çok iyi bir algoritmaya sahip olduğunu ve 1 veya 2 piksel genişliğinde ince çizgiler çizebileceğini fark ettim. Şu anki en iyi çaba algoritmam genelde 3 pikselden daha fazlasını gerektiriyor, bu yüzden satırlarım Mathematica'nınkinden biraz daha kalın.

Mathematica'nın antialiasing için hangi algoritmayı kullandığını bilen var mı, yoksa 2-piksel antialiased çizgileri ve eğrileri oluşturmak için kullanılabilecek yüksek kaliteli bir algoritma önerebilir mi?

+0

Üç kez 3 ayrı çizgi çizemiyor musunuz? – ElKamina

+0

En basit ve en basit, ancak biraz yavaş, antialiasing yöntemi sadece aşırı hızda örnekleme. Yani, çizgiyi gerçek ekranınızdan daha yüksek çözünürlükte çizin ve ölçeklendirin. –

+0

Bu yönteme aşinayım ve Mathematica'nın bunu kullanması olasıdır, ancak gördüğüm örnekler Mathematica'ya kıyasla çok iyi kalitede görünmüyor. Belki sadece bir şeyler görüyorum, ama şüphem daha sofistike bir yaklaşım kullanıyorlar. –

cevap

3

Hizalanmamış çizgiler çizmek için en çok kullanılan algoritmalardan biri Wu's line algorithm.

Bu temelde, çokgenleri kolayca çizebilirsiniz; Bu site, bu algoritmanın elips çizmek için nasıl elde edileceğini açıklar.

+0

Örneğin, günah ve cos (trigonometrik fonksiyonlar) ve daha yüksek dereceli polinomlar dahil olmak üzere keyfi şekiller çizebiliyorum. Wu'nun algoritması öncelikle düz çizgiler içindir. –

+0

Bence aynı yaklaşım her şey için uygulanabilir. Antialiased splineların nasıl çizileceğinden bahseden bu gönderiye bakın: http://stackoverflow.com/questions/4541442/drawing-aliased-pixel-perfect-1px-splines-catmull-rom-specifically. Her şeyi çizmek için aynı numarayı kullanabilirsin; Başka bir yol, eğrileriniz ile subpixellic kesinlik ile eğrinize yaklaşıyor ve spline çiziyor. – Bentoy13