2013-07-17 22 views
5

Sono interessato a trovare un algoritmo antialiasing che può essere utilizzato su una linea di qualsiasi forma (non solo linee rette).Algoritmo di antialiasing Mathematica

Ho notato che Mathematica sembra avere un ottimo algoritmo e può disegnare linee sottili di 1 o 2 pixel di larghezza. Il mio attuale algoritmo di best effort richiede generalmente più di 3 pixel, quindi le mie linee sono leggermente più spesse di quelle di Mathematica.

Qualcuno sa quale algoritmo utilizza Mathematica per l'antialiasing o può consigliare un algoritmo di alta qualità che può essere utilizzato per generare linee e curve antialiasate sub-2-pixel?

+0

Non riesci a disegnare 3 linee separate per tre volte? – ElKamina

+0

Il metodo più pulito e semplice, ma un po 'lento, antialiasing è solo sovracampionamento. Cioè, disegna la linea a una risoluzione più alta della tua visualizzazione effettiva e ridimensionala. –

+0

Ho familiarità con questo metodo, ed è possibile che Mathematica lo usi, tuttavia gli esempi che ho visto non sembrano avere una qualità molto buona tutto il tempo rispetto a Mathematica. Forse sto solo vedendo le cose, ma il mio sospetto è che stiano usando un approccio più sofisticato. –

risposta

3

Uno degli algoritmi più utilizzati per disegnare linee non allineate è Wu's line algorithm.

Su questa base, è possibile disegnare facilmente i poligoni; questo site spiega come derivare questo algoritmo per disegnare ellissi.

+0

Desidero essere in grado di disegnare forme arbitrarie, inclusi ad esempio, sin e cos (funzioni trigonometriche), nonché polinomi di ordine superiore. L'algoritmo di Wu è principalmente per linee rette. –

+0

Penso che lo stesso approccio possa essere applicato per tutto. Vedi questo post che menziona come disegnare le spline antialias: http://stackoverflow.com/questions/4541442/drawing-aliased-pixel-perfect-1px-splines-catmull-rom-specifically. Puoi usare lo stesso trucco per disegnare tutto il resto; un altro modo è approssimare la curva con precisione subpixellica con spline e tracciare la spline. – Bentoy13