2013-07-17 10 views
5

Ich bin interessiert an der Suche nach einem antialiasing Algorithmus, der auf einer Linie beliebiger Form (nicht nur geraden Linien) verwendet werden kann.Mathematica Antialiasing-Algorithmus

Ich bemerke, dass Mathematica einen sehr guten Algorithmus zu haben scheint und feine Linien 1 oder 2 Pixel breit zeichnen kann. Mein aktueller Best-Effort-Algorithmus benötigt im Allgemeinen mehr als 3 Pixel, so dass meine Linien etwas dicker sind als die von Mathematica.

Weiß jemand, welchen Algorithmus Mathematica für das Antialiasing verwendet, oder kann er einen Algorithmus mit hoher Qualität empfehlen, der zur Generierung von Antialias-Linien und -Kurven unter 2 Pixel verwendet werden kann?

+0

Kannst du nicht 3 separate Linien dreimal zeichnen? – ElKamina

+0

Die sauberste und einfachste, aber etwas langsame Antialiasing-Methode ist nur eine Überabtastung. Das heißt, zeichnen Sie die Linie mit höherer Auflösung als Ihr tatsächliches Display und verkleinern Sie sie. –

+0

Ich bin mit dieser Methode vertraut, und es ist möglich, dass Mathematica sie verwendet, aber Beispiele, die ich gesehen habe, scheinen im Vergleich zu Mathematica nicht die ganze Zeit eine sehr gute Qualität zu haben. Vielleicht sehe ich nur Dinge, aber mein Verdacht ist, dass sie einen ausgeklügelteren Ansatz verwenden. –

Antwort

3

Einer der am häufigsten verwendeten Algorithmen zum Zeichnen von Linien ohne Linien ist Wu's line algorithm.

Auf dieser Grundlage können Sie Polygone einfach zeichnen; Diese site erläutert, wie dieser Algorithmus zum Zeichnen von Ellipsen abgeleitet wird.

+0

Ich möchte in der Lage sein, beliebige Formen zu zeichnen, einschließlich zum Beispiel sin und cos (trigonometrische Funktionen), sowie Polynome höherer Ordnung. Wus Algorithmus ist hauptsächlich für gerade Linien gedacht. –

+0

Ich denke, dass derselbe Ansatz für alles angewendet werden kann. Siehe diesen Beitrag, der erwähnt, wie man Antialias-Splines zeichnet: http://stackoverflow.com/questions/4541442/drawing-aliased-pixel-perfect-1px-splines-catmull-rom-specifically. Sie können den gleichen Trick verwenden, um alles andere zu zeichnen; Ein anderer Weg besteht darin, Ihre Kurve mit Subpixellic-Präzision mit Splines zu approximieren und den Spline zu zeichnen. – Bentoy13