Download - 4.5. Raszter-konverzió
1
4.5. Raszter-konverzió4.5. Raszter-konverzió
A képelem látványát alkotó képpontok előállítása
1. Egyenes szakasz képpontjai
2. Sokszög lemez kitöltése
22
3
Raszter konverzió
• A képelemet ábrázoló képpontok helye
és színe)
• Minden képelem-típusra más eljárás.
• 3D-ben:
4.7. Árnyalás (shading, textúra,stb.)
4
(1) Szakaszok raszter-konverziója
• Adott: P és Q a KKR-ben
Keressünk köztes képpontokat
• Durva erőszak: m = dy / dx és
for x:= P.x to Q.x (step 1) do
GputPixel(x, y:= m*(x-P.x)+P.y, szín);
• Kifogások: lassú (valós aritmetika, kerekítés),
5
A felezőpontos (Bresenham) eljárás
• dx = Q.x - P.x, dy = Q.y - P.y
• (dx = 0, dy = 0, dx = dy könnyű esetek)
• Síknyolcadok; minta: 0 < dy < dx
• Növekményes eljárás:
• Ha Pi közelítő pont K-re, vagy ÉK-re lépünk
• aszerint, hogy az egyenes F alatt, vagy fölött
6
A PQ egyenes egyenlete
• G(x,y) = ax + by + c = 0 = dyx - dxy + (P.ydx - P.xdy) = 0
• fölötte G(x,y) negatív, alatta pozitív.
• e(xi) = 2G(F)=2G(xi+1,yi+1/2) = dy (2x) – dx(2y +1)+ 2 (P.y dx - P.xdy)
• Ha e(xi) < 0, akkor F az egyenes fölött: Kha >0, akkor F az egyenes alatt; ÉK
• e(x0) = 2dy- dx, deK = 2dy és deÉK = 2(dx - dy)
7
Az eljárás váza:procedure GRasCoLine( P,Q, szín);
begin dx:= Q.x - P.x; dy:= Q.y - P.y; {esetszétválasztás; 0 < dy < dx ág: } e :=2*dy-dx; deK :=2*dy; deEK := 2*(dy-dx); while x=P.x, x <= Q.x do begin
if e<=0 then {az F alatt} Keletre lép
else {e>0} { az F fölött} Észak-keletre lép;
GputPixel( x,y,szin ); end; {while}end; { procedure}
8
A ciklus magja:
if e<=0 then {az F alatt}
begin {K} x ++; y; e:= e+deK; end;
else {e>0} { az F fölött}
begin {ÉK} x ++; y++; e:= e+deEK; end;
GputPixel( x,y,szin );
9
Körvonal raszter-konverziója
• A (0,0) középpontú, r sugarúkör rajzolása
• Nyolcad: (0,r)-(r,0)-ig; put8pixel(x, y);
• Pi után K-re, vagy DK-re lépünk
• G(x,y) = xx + yy – rr = 0, e(xi) = 4G(F) = 4G(xi+1, yi-1/2)
• e(x0) = 5/4 - r, deK=2xi + 3, deDK=2 (xi - yi) + 5
függ az x-től (e másodfokú!), de a 2. differencia=2
• Minden lépésben módosítjuk y-t, e-t, deK-t és deDK-t
10
(2) Sokszöglemezek kitöltése
1. Zárt terület elárasztása
2. Az Aktív Élek Listája - eljárás
3. A jobbra festő eljárás
11
2.1. Zárt terület elárasztása
• Interaktív programoknál
• Egy zárt területen belül rámutatunk egy pontra
• „forráspont” és „gát”
12
procedure GFloodFill4(x,y:Gpixxy; hatar: Gcolor);begin
{ festőszín: global fillColor } if GGetPixel(x,y)<>hatar AND GGetPixel(x,y)<> fillColor then begin Gputpixel (x ,y ,fillColor); FloodFill4(x+1,y ,hatar); FloodFill4(x ,y+1,hatar); FloodFill4(x-1,y ,hatar); FloodFill4(x ,y-1,hatar); end;{if}end; {GFloodFill}
{Az árasztás lassú és zabálja a vermet!! Javítások: koherenciával.}
*. Egy sokszög belső pontjai
• Egy sokszög belső pontjábólinduló félegyenesen:
páratlan számú átmetszés,
• Külső pontokból induló félegyenesen :páros számú átmetszés
• (minden félegyenesen egyformán)
14
2.2. Az AÉL (aktív élek listája) - eljárás
• Egy sokszög belső pontja: páratlan számú átmetszés,
• Külső pontja: páros számú átmetszés egy félegyenesen
• (minden félegyenesen egyformán)
15
A sokszög él-táblája (ÉT):
• A pászták láncolt listája: a pásztán kezdődő élek adatai; x szerint rendezve
HI, HGAB, AIBCGFDC, DE, EF
• minden élről: { y1, x1, dx, dy, next }; y1<=y2
16
Az Aktív Élek Listája (AÉL):
• Induláskor az ÉT első pásztája (HI,HG)
• Ciklusban:
• Páros festés a pásztán:az 1.-2., a 3.-4.,… él x értéke között
• Áttérés új pásztára:az élek x értékének változásaa kiürült élek kidobásaúj élek az ÉT-rőlaz élek rendezése (x)
• Amíg AÉL és ÉT ki nem ürül
17
Az AÉL eljárás értékelése
• Tetszőleges sokszögre, szigetekre is
• Vízszintes élek és szélső csúcsok is.
• Adatszerkezet: 2x az élek száma;csak egészszámok (és mutatók)
• Rendezés: gyors, beszúró rendezés
18
2.3. A jobbra festő eljárás
• A sokszög minden élére:
• tőle jobbra minden képpontot XOR-ral befestünk.
• A külső pontokat páros számszor festjük; nem változnak.
• Egy „baloldali” él megváltozik, „jobboldali” nem! A körvonal után-festése.
• Elég a befoglaló dobozra
19
Terület kitöltése mintázattal
• Mintázat (pattern): képpont-lap (négyzet)
• „Csempézés” (hálóban)
• Egy horgonypontban kezdve
• A kitöltő eljárástól kapott képpontokkal maszkolva.
• A térben: textúra, a lap helyzete szerint transzformálva.
20
Megoldási elvek a szerelőszalagon
• Sebesség és tároló-igény
• Tárgytér és képtér (valós-egész)
• A pászták követése
• Koherenciák (pásztán, pászták között)
• Dobozolás
• Térfelosztás
• Rendezés
21
SZeSZa - összefoglalás
• Grafikus szerelőszalag: a kép előállításának műveletei:
• A képelemek előkészítése
Leképezés a tárgytérből a képtérbe
Képkivágás
Láthatóság-takarás
Raszter-konverzió
2222
A grafikus alapszoftver
• BGI (és mások): KKR-ben kapott 2D képelemek, a Képelemek előkészítését és a Leképezést az AP végzi. korlátozott funkciók.
• OpenGL – 3D alapszoftver
• Grafikus munkaállomások: pl. a láthatóságot hard(firm)verben.
• Grafikus modellező rendszerekbe beépítve.