15
Rasterizace úsečky

Rasterizace úsečky

  • Upload
    lihua

  • View
    52

  • Download
    0

Embed Size (px)

DESCRIPTION

Rasterizace úsečky. 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. DDA algoritmus. Δ x = x 2 – x 1 , Δ y = y 2 – y 1 , k= Δ y/ Δ x dx = 1, dy = k*dx = k - PowerPoint PPT Presentation

Citation preview

Page 1: Rasterizace  úsečky

Rasterizace úsečky

Page 2: Rasterizace  úsečky

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

Page 3: Rasterizace  úsečky

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

Page 4: Rasterizace  úsečky

DDA algoritmus

Page 5: Rasterizace  úsečky

DDA algoritmus

• Základní nevýhoda: pracuje s neceločíselnou aritmetikou

Page 6: Rasterizace  úsečky

Bresenhamův algoritmus

• Jack Elton Bresenham (* 1937)

• Zaměstnanec IBM a Winthrop University (Rock Hill, Jižní Karolína, USA)

• Algoritmus z roku 1962

Page 7: Rasterizace  úsečky

Bresenhamův algoritmus

xi,yixi+1,yi

xi+1,yi+1

d2

d1

y = kx + b

y* = k(xi+1) + b

d1 = y*– yi = k(xi+1) + b - yi

d2 = yi + 1 –y* = yi + 1 - k(xi+1) - b

y*

Page 8: Rasterizace  úsečky

Bresenhamův algoritmus

xi,yixi+1,yi

xi+1,yi+1

d2

d1

Δ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

y*

Page 9: Rasterizace  úsečky

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

Page 10: Rasterizace  úsečky

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

pi+1 = pi + 2Δy – 2Δx( yi+1- yi)

Počáteční hodnota p1 = 2 Δy – Δx

Page 11: Rasterizace  úsečky

Další varianty

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

Page 12: Rasterizace  úsečky

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.

Page 13: Rasterizace  úsečky

Varianty pro x1 > x2

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

Page 14: Rasterizace  úsečky

Svislá úsečka (x1 = x2)

Vůbec nemá směrnici, nutno řešit samostatným jednoduchým algoritmem.

Page 15: Rasterizace  úsečky

Jádro programu BressenhamDELTA_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}