Generování základních grafických prvků v rastrové grafice

I grafické prvky zadané ve vektorovém formátu nakonec potřebujeme vykreslit v rastrové formě. Monitor má omezenou síť pixelů na kterou musíme vektorové zadaný prvek znázornit.

Algoritmy pro převod vektoru na rastr vycházejí z analytické geometrie a rovnic geometrických útvaru ve tvaru y=f(x) např. směrnicová rovnice přímky.

Algoritmus DDA (Digital Differential Analyzer) 

Algoritmus DDA vykreslí ty pixely, kterými přímka křivka prochází z větší části. Vyjde-li y jako desetinné číslo, zaokroulí je na celý pixel nahoru či dolu.

Nevýhodou tohoto algoritmu je, že obraz je kostrbatý při malém rozlišení. Na vyhlazení pixelových skoků se používá Bresenhamův algoritmus.

Bresenhamův algoritmus 

Tento algoritmus vyhlazuje čáry použitím různé intenzity vysvícení pixelu. Vyjde-li y nerozhodně mezi dva pixely jako například u obrázku vpravo, kde f(2)=1,6 , vysvítí se oba pixely ([1,2],[2,2]) avšak s různou intenzitou.

Intenzita vysvícení se spočte podle vzdálenosti skutečného (vektorového) bodu od pixelů, jak je znázorněno na obrázku.

d = d2 + d1 = 1

d1 - vzdálenost skutečného bodu od horního pixelu
d2 - vzdálenost skutečného bodu od spodního pixelu

V poměru d2 : d1 se vysvítí ony sousední pixely. Přičemž ten pixel, kterému je skutečný bod blíže se vysvítí více, než ten od kterého je dál.

Rovnice základních grafických prvků

Algoritmy pro vykreslování grafických prvků vycházejí z analytické geometrie a rovnic jednotlivých geometrických útvaru.

Rovnice přímky:  

  • obecná (směrnicová): y = a⋅x + b
    > konstanta a udává naklonění přímky a=tg φ, kde φ je úhel svíraný s osou x
    > konstanta b určuje posun
  • parametrická: x = x0 + a1⋅t
                             y = y0 + a2⋅t 
    > bod [x0, y0] je libovolný bod přímky
    > konstanty a1, a2 udávají naklonění přímky
    t je parametr (-∞, ∞)
Rovnice kružnice:
  • obecná: x2 + y2 = r2 pro kružnici se středem v počátku a poloměrem r. S obecným středem [Sx, Sy] vypadá obecná    rovnice kružnice takto: (x - Sx)2 + (y - Sy)2 = r2
  • parametrická: x = Sx + r⋅cosφ
                             y = Sy + r⋅sinφ 
    > bod [Sx, Sy] je střed kružnice
    > parametr φ je úhel z intervalu <0, 2π)
Písmo:

Fonty písma jsou uloženy ve vektorovém formátu, právě aby se neměnila kvalita při změně velikosti. Písma jsou popsány bezierovými křivkami. Rozlišujeme dva typy fontů:

  • TrueType fonty - kvadratické Bézierovy křivky
  • Postcriptové fony - kubické Bézierovy křivky