230 likes | 348 Views
4.5. Raszter-konverzió. A képelem látványát alkotó képpontok előállítása Egyenes szakasz képpontjai Sokszög lemez kitöltése. 2. Raszter konverzió. A képelemet ábrázoló képpontok helye és színe) Minden képelem-típusra más eljárás.
E N D
4.5. Raszter-konverzió A képelem látványát alkotó képpontok előállítása • Egyenes szakasz képpontjai • Sokszög lemez kitöltése
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.)
(1) Szakaszok raszter-konverziója • Adott: P és Q a KKR-ben Keressünk köztes képpontokat • Durva erőszak: m = dy / dx ésforx:= P.xtoQ.x (step 1) do GputPixel(x, y:=m*(x-P.x)+P.y, szín); • Kifogások: lassú (valós aritmetika, kerekítés),
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
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)
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);whilex=P.x, x <= Q.x dobeginif 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}
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 );
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
(2) Sokszöglemezek kitöltése • Zárt terület elárasztása • Az Aktív Élek Listája - eljárás • A jobbra festő eljárás
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”
procedureGFloodFill4(x,y:Gpixxy; hatar: Gcolor);begin{ festőszín: global fillColor }if GGetPixel(x,y)<>hatarAND GGetPixel(x,y)<> fillColor thenbegin 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ól induló 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)
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)
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 rendezveHI, HGAB, AIBCGFDC, DE, EF • minden élről: { y1, x1, dx, dy, next }; y1<=y2
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
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
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
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.
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
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ó
22 22
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.