számítógépes grafika gyakorlat

Upload: richard-forgacs

Post on 07-Jul-2015

542 views

Category:

Documents


1 download

TRANSCRIPT

SZMTGPI GRAFIKAGYAKORLATsszelltotta: Vrady Lajos [email protected]

1

TARTALOM

1. HASZNLT ADATSZERKEZETEK ........................................................................................................................ 4 2. RASZTERES ALGORITMUSOK.............................................................................................................................. 5 2.1 SZAKASZ RAJZOLSA ................................................................................................................................................ 5 2.1.1 Egyszer nvekmnyes algoritmus................................................................................................................... 5 2.1.2 Kzppontos vonalalgoritmus.......................................................................................................................... 6 2.2 SZAKASZ LEHATROLSA ....................................................................................................................................... 10 2.2.1 Cohen-Sutherland algoritmus ........................................................................................................................ 10 2.3 POLIGONLEHATROLS (SUTHERLAND-HODGMAN)............................................................................................... 12 2.4 KZPPONTOS KRRAJZOL ALGORITMUS ............................................................................................................. 14 2.4.1 Elmlet ........................................................................................................................................................... 14 2.4.2 Program {smidpcir.pas} ................................................................................................................................ 15 2.5 KR KITLTSE {SFILLCIR.PAS} ............................................................................................................................. 17 2.6 TGLALAP KITLTSE {SFILLREC.PAS}................................................................................................................... 17 2.7 REKURZV KITLTS {SFLOODFI.PAS}..................................................................................................................... 17 2.8 LTALNOS POLIGON KITLTSE ........................................................................................................................... 18 2.8.1 Algoritmus...................................................................................................................................................... 19 2.8.2 Kitlts mintval ............................................................................................................................................ 21 3. SKBELI TRANSZFORMCIK {SLABDA?.PAS} ............................................................................................ 23 3.1 WINDOW TO VIEWPORT TRANSZFORMCI {SWINVIEW.PAS}................................................................................. 23 4. KONVEX BUROK ALGORITMUSOK .................................................................................................................. 25 4.1 GRAHAM PSZTZS (SKBAN) {SHULLGRH.PAS}................................................................................................ 25 5. INTERPOLCI, APPROXIMCI .................................................................................................................... 28 5.1 HERMITE-V ............................................................................................................................................................ 28 5.1.1 Els eset ......................................................................................................................................................... 28 5.1.2 Msodik eset {shermit.pas} ............................................................................................................................ 30 5.1.3 Kezdeti rint meghatrozsa........................................................................................................................ 32 5.2 BEZIER GRBE ........................................................................................................................................................ 32 5.2.1 de Casteljau algoritmus { sdecast.pas }......................................................................................................... 32 5.2.2 A grbe ellltsa Bernstein polinommal {sbezier.pas}............................................................................... 33 5.2.3 Bezier grbe tulajdonsgai ............................................................................................................................ 33 5.2.4 Interpolci Bzier-grbvel ......................................................................................................................... 33 5.2.5 Kapcsold Bezier grbk ............................................................................................................................. 34 5.2.6 Bezier grbe bevezetse mskppen............................................................................................................... 34 5.3 3-ADFOK B-SPLINE GRBE {S3BSPLN.PAS} ........................................................................................................... 36 5.4 B-SPLINE GRBE LTALNOS ALAKJA {SBSPLN.PAS, SCOXDEBU.PAS}.................................................................... 39 6. TRBELI PONTTRANSZFORMCIK............................................................................................................... 40 6.1 EGYBEVGSGI TRANSZFORMCI ...................................................................................................................... 40 6.2 HASONLSGI TRANSZFORMCIK ........................................................................................................................ 41 6.3 AFFIN TRANSZFORMCIK ...................................................................................................................................... 41 6.4 NYRS ................................................................................................................................................................... 42 7. TR SKRA VAL LEKPEZSE......................................................................................................................... 43 7.1 AXONOMETRIA ....................................................................................................................................................... 43 7.2 CENTRLIS PROJEKCI, PERSPEKTVA ..................................................................................................................... 43 7.2.1 Z tengelyen a C nzpont az Origtl d tvolsgra....................................................................................... 432

7.2.2 ltalnos helyzet nzpont (alfa, bta, r, d)................................................................................................. 43 8. FELLETEK BRZOLSA ................................................................................................................................. 44 8.1 LTHATSG SZERINTI BRZOLS ....................................................................................................................... 44 9. FELLET INTERPOLCI, APPROXIMCI ................................................................................................. 45 9.1 BEZIER FELLET {BEZIERFE?.PAS} ......................................................................................................................... 45 9.2 B-SPLINE FELLET .................................................................................................................................................. 46 9.2.1 ltalnos B-spline fellet ............................................................................................................................... 46 9.2.2 Harmadfok B-spline fellet {bspl3fe?.pas} .................................................................................................. 46 10. SKLAPOKKAL HATROLT TESTEK BRZOLSA ................................................................................. 47 10.1 TESTMODELLEZS ................................................................................................................................................. 47 10.1.1 Drtvz modell {\Polieder\Ztnezop\nemlathato\} .................................................................................... 47 10.1.2 Felletmodell {\Polieder\Ztnezop\lathato\}.............................................................................................. 48 11. LTHATSG SZERINTI BRZOLS .......................................................................................................... 51 11.1 HTS LAPOK KISZRSE ..................................................................................................................................... 51 11.2 Z BUFFER ALGORITMUS ........................................................................................................................................ 51 11.3 SUGRKVETS (RAY TRACING) {POVRAY.DOC} ............................................................................................ 51 11.3.1 Algoritmus.................................................................................................................................................... 51 11.3.2 A metszspontok meghatrozsa.................................................................................................................. 52 11.3.3 Hatkonysgot nvel mdszerek:............................................................................................................... 52

3

1. Hasznlt adatszerkezetekType Ponttype=Record X,Y:integer; end; Type rpoint2dtype=record x,y:real; end; rpoint3dtype=record x,y,z:real; end; Pontsor=array[1..N] of ponttype;

4

2. Raszteres algoritmusok2.1 Szakasz rajzolsa2.1.1 Egyszer nvekmnyes algoritmusm=

y y2 y1 = x x2 x1

y = m x + B yi +1 = m xi +1 + B

Ha az |m|1, akkor x = 1 -re y > 1 lesz, (azaz 1 lps x-ben egynl kisebb egyenl lpst jelent y-ban). gy y = 1 esetn x < 1 , azaz y szerint kell lpkednnk egyesvel.yi +1 B yi + y B y = = xi + , m m m 1 Ha y = 1, akkor xi +1 = xi + m xi +1 = 1 gy az ( xi , yi ) pont utn a ( xi + round , yi + 1) pontot kell megjelenteni m

Htrny: Ha egyszer is, de osztst kell vgezni ( m =

y ). x

Az m nem egsz, gy a programban sem tudunk egsz tpust hasznlni. A kerekts szintn idignyes.

5

2.1.2 Kzppontos vonalalgoritmus2.1.2.1 Elmlet

m=

y y2 y1 = x x2 x1 y x+ B x

y = m x + B y=

F ( x , y ) = a x + b y + c d = y x x y + B x = 0

y F(x,y)=0 F(x,y)0

Ha 0 m 1 , akkor x = 1 -re y < 1 lesz (azaz 1 lps x-ben egynl kisebb lpst jelent yban).

NE Q P=(x p, y p ) M E

1 Ha d p +1 = F x p + 1, y p + > 0 , akkor a P utn az NE pontot gyjtjuk ki. 21 Ha d p +1 = F x p + 1, y p + < 0 , akkor a P utn az E pontot gyjtjuk ki. 2

6

1 Ha d p +1 = F x p + 1, y p + = 0 , akkor a P utn az E pontot gyjtjuk ki (megllapods 2 szerint).

Ha minden x szerinti lpsben az ( x p +1 , y p +1 ) pontot behelyettestennk az F-be, akkor a sok mvelet miatt lass lenne a szmts, ezrt prbljuk meg meghatrozni a d p+2 rtkt a d p+1 rtkbl. Ennek meghatrozshoz kt esetet kell figyelembe vennnk:

a) E-t vlasztottuk az x p+1 pontban

1 1 d p + 2 = F x p + 2, y p + = a x p + 2 + b y p + + c 2 2

(

)

1 1 d p +1 = F x p + 1, y p + = a x p + 1 + b y p + + c 2 2

(

)

E = d p + 2 d p +1 = a = y

b) NE-t vlasztottuk az x p+1 pontban

3 3 d p + 2 = F x p + 2, y p + = a x p + 2 + b y p + + c 2 2

(

)

1 1 d p +1 = F x p + 1, y p + = a x p + 1 + b y p + + c 2 2

(

)

NE = d p + 2 d p +1 = a + b = y xMeghatroztuk, hogy az x szerint lpkedve, hogyan vltozik a d az elz x d rtkre alapozva. Mostmr csak a d kezdeti rtkt kell meghatroznunk. Az els kppontunk a szakasz egyik vgpontja, legyen ez ( x0 , y 0 ) .1 Az els kzppont x0 + 1, y0 + -nl van, s gy 2

1 b b F x0 + 1, y0 + = a x0 + b y0 + c + a + = F ( x0 , y0 ) + a + . 2 2 2 Mivel ( x0 , y0 ) a vonalon van, az F ( x0 , y0 ) = 0, gy a d kezd = a +

x b = y . 2 2

A trtek elkerlshez szorozzuk meg az F fggvny rtkt 2-vel.2.1.2.2 Algoritmus {smidplin.pas}

procedure MidpointLine(x0,y0,x1,y1:integer;color:word); Var x,y,dx,dy,incE,incNE,d:longint; begin dx:=x1-x0; dy:=y1-y0; d:= 2*dy-dx;

7

incE:=2*dy; incNE:=2*(dy-dx); x:=x0; y:=y0; setpixel(x,y,color); while x