Prezentace se nahrává, počkejte prosím

Prezentace se nahrává, počkejte prosím

Rasterizace úsečky.

Podobné prezentace


Prezentace na téma: "Rasterizace úsečky."— Transkript prezentace:

1 Rasterizace úsečky

2 DDA algoritmus Dynamic Decrease algoritmus
Pro začátek popis pro úsečky se směrnicí mezi 0 a 1 (řídící osa x) Dalších 8 variant se udělá symetricky

3 DDA algoritmus Δx = x2 – x1 ,Δy = y2 – y1, k= Δy/Δx
dx = 1, dy = k*dx = k Xi+1 = xi + dx = xi +1 Yi+1 = yi + dy = yi + k Yi+1 zaolrouhlím na celé číslo

4 DDA algoritmus

5 DDA algoritmus Základní nevýhoda: pracuje s neceločíselnou aritmetikou

6 Bresenhamův algoritmus
Jack Elton Bresenham (* 1937) Zaměstnanec IBM a Winthrop University (Rock Hill, Jižní Karolína, USA) Algoritmus z roku 1962

7 Bresenhamův algoritmus
y = kx + b y* = k(xi+1) + b d1 = y*– yi = k(xi+1) + b - yi d2 = yi + 1 –y* = yi k(xi+1) - b xi+1,yi+1 d2 y* d1 xi,yi xi+1,yi

8 Bresenhamův algoritmus
Δd = d1 – d2 = 2k(xi+1) – 2yi +2b -1 Pro Δd kladné použiji bod yi+1 Pro Δd záporné použiji bod yi xi+1,yi+1 d2 y* d1 xi,yi xi+1,yi

9 Bresenhamův algoritmus
Δd = d1 – d2 = 2*Δy/Δx*(xi+1) – 2yi +2b -1 Jediná neceločíselná hodnota ve vyorci je směrnice k = Δy/Δx. Vynásobím celý vzorec kladnou hodnotou Δx. Tím se smysl použití znaménka nemění. pi = Δd Δx = 2Δyxi+ 2Δy – 2Δx yi + Δx (2b-1) Hodnota pi se nazývá i-tá predikce

10 Výpočet následující predikce
pi+1 = 2Δy(xi+1) + 2Δy – 2Δx yi+1 + Δx (2b-1) pi+1 = pi + 2Δy – 2Δx( yi+1- yi) Pro pi záporné položím yi+1 = yi a pi+1 = pi + 2Δy Pro pi nezáporné položím yi+1 = yi + 1 Počáteční hodnota p1 = 2 Δy – Δx

11 Další varianty Směrnice větší než 1 → řídící osa y.

12 Další varianty Směrnice záporná → drobné změny algoritmu, místo přičítání 1 odečítám 1. Dvě varianty pro řídící osu x a y.

13 Varianty pro x1 > x2 Úsečka vede „zprava doleva“. Buď řešit zvlášť (4 další varianty), nebo prohodit body x1 a x2.

14 Svislá úsečka (x1 = x2) Vůbec nemá směrnici, nutno řešit samostatným jednoduchým algoritmem.

15 Jádro programu Bressenham
DELTA_Y:=Y2-Y1; DELTA_X:=X2-X1; K1:=2*DELTA_Y; K2:=2*(DELTA_Y-DELTA_X); PREDIKCE:=2*DELTA_Y-DELTA_X; X:=X1; Y:=Y1; bod (X,Y,BARVA); {vykresli pocatecni bod} while X<=X2 do begin X:=X+1; if PREDIKCE > 0 then begin Y:=Y+1; PREDIKCE:=PREDIKCE+K2 end else PREDIKCE:=PREDIKCE+K1; bod(X,Y,BARVA); {vykresli dalsi bod} end; {konec vykreslovani usecky}


Stáhnout ppt "Rasterizace úsečky."

Podobné prezentace


Reklamy Google