Üdvözlök mindenkit szeretettel, ez alkalommal a felületek leírásával fogunk foglalkozni, majd azok megjelenítésével. Ez már sokkal látványosabb, és talán érdekesebb is lesz mindenki számára, mint az eddigiek. Sajnálom, ha néha érthetetlen vagyok, de pontosan ezért igyekezek megfelelő irodalmat biztosítani mindenki számára. Mert utána lehet nézni így bárminek. Az elmélet most egy kicsit rövidke lesz, de a gyakorlatban mindent részletesen végigveszünk. Lássunk is hozzá.

Euler-Monge előállítású felületek

Az analitikus geometriából már tudjuk, a sík pontjait két valós számmal, a tér pontjait három valós számmal tudjuk jellemezni, vagyis az illető pont koordinátáival. Pontosan ezért, ha H a tér egy ponthalmaza, H' pedig az egyenesé, ez azt jelenti, hogy a valós számhármasok H halmazának minden egyes eleméhez egy meghatározott valós számot rendelünk. Ilyen esetben a következő jelölés szokásos: u:=f(x,y,z), és háromváltozós függvényről beszélünk. Ha H síkbeli ponthalmaz, és H' az egyenes ponthalmaza, akkor z:=f(x,y) kétváltozós függvényünk van. Ha H a sík valamely halmaza, akkor a H-n értelmezett z=f(x,y) valós függvényt szemeltethetjük a következő módon. Az x,y sík (x,y) Î H pontjából a síkra merőleges, a z-tengellyel párhuzamosan felmérünk f(x,y) hosszúságú szakaszt, vagy mégpontosabban: a térben felrajzoljuk az (x,y,z=f(x,y)) pontot. Ha a H halmaztartomány és f(x,y) folytonos, akkor az (x,y,z=f(x,y)) képpontok összessége egy felület, z=f(x,y) pedig a felület egyenlete. Az Euler-Monge előállítású felületek tulajdonképpen a kétváltozós valós függvények grafikus képei (domborzat jellegű). Az egységes kezelés érdekében ezek a felületek is felírhatóak az általánosabb Gauss előállításban:

    x=u

    y=v ; (u,v)Î DĚ R2

    z=f(u,v)

Hogy az a felírás miért olyan fontos, azt hamarosan megtudjuk. Addig is nézzünk meg néhány példát felületekre: z=x2+y2 vagy z=x2-y2

Felületek leírása

Az általános megfogalmazás után most közelítsük meg egy kicsit "gyakorlatiasabban" a témát. Tehát a 3D felületek a 2D görbékhez hasonlóan definiálhatók explicit egyenletekkel vagy implicit egyenletekkel. Hogy mi az explicit és az implicit forma közötti különbség azt már tárgyaltuk.

    Explicit: x=x(u,v) y=x(u,v) z=x(u,v) u,v Î [0,1]

    Implicit: Ś (x,y,z)=0

Ezek alapján, már fel tudjuk írni, például egy (x0,y0,z0) középpontú, R sugarú gömb explicit egyenleteit:

X=x0+R*cos2p u*sinp v

    Y=y0+R*sin2p u*sinp v

    Z=z0+R*cos2p u ahol u,v Î [0,1]

Egy felület megadása a számítógépes szerkesztés szempontjából akkor a legelőnyösebb, ha paraméteres előállítású. Amelyben a felület pontjainak koordinátái egy kétváltozós függvény. Egy paraméteres előállítású felület:

r(u,v)=r(x(u,v), y(u,v), z(u,v))

Mint ahogy az fentebb már láttuk, ide sorolhatjuk az úgynevezett Euler-Monge előállítást is, amelyben a paraméterek maguk az x és y koordináták (domborzat jellegű felületek). A felületek egyik leggyorsabb és legszemléletesebb megjelenítési módja az, ha a megadott felületre görbékből álló hálózatot rajzolunk. Paraméteres előállítású felületre görbét úgy rajzolunk, hogy a paraméter értelmezési tartományában értelmezünk újabb paraméter bevezetésével egy síkgörbét, majd ennek előállítását behelyettesítjük a felület képletébe.

r(t)=r(u(t), v(t))

Az u és v állandó egyenesekből a fenti módon származtatott görbéket paramétergörbéknek nevezzük. Ha az u és v szerinti parciális differenciálhányódósait képezzük, akkor a szintvonalaknak megfelelő térgörbék érintő vektorait kapjuk:

Az fent már ismertetett r(t)=r(u(t), v(t)) alakú tetszőleges felületi görbe érintője pedig a következő: r'(t)=ruu'(t)+rvv'(t). Az illető ponton áthaladó két paramétervonal érintője által meghatározott síkban található ez az érintő. Az érintési síkot tehát az ru és rv vektorok együttesen határozzák meg. Egy az érintő síkra az (u,v) pontban állított merőleges vektort az ru és rv vektoriális szorzatával állítható elő: n= ru ´ rv.Ez az n vektor a felület normálvektorának nevezzük. Ez a felület pontjai megvilágosítás erősségének kiszámításában játszik fontos szerepet. Valamint egy felületet simának nevezünk, ha érintősíkja a felület minden pontjában értelmezett, és változása folytonos. További simasági követelmény lehet még az is, hogy a másodrendű parciális deriváltak is folytonosak legyenek.

Felületeket előállítani amint látjuk többféle módon is, lehet. Mint már említettük megtehetjük mindezt interaktív paraméteres előállítással, görbecsaládok segítségével, vagy esetleg kontrolpontrácsra illesztéssel. Röviden tekintjük át most ezeket a lehetőségeket. Interaktív paraméteres előállítás estén a kétváltozós analitikus függvényeket megadva, ezek konstansait módosítva tudjuk változtatni a felület alakját. Előnye az, hogy biztos sima lesz a felület mert analitikus előállítású. Hátránya viszont az, hogy sokféle függvény jöhet szóba, valamint az együtthatók mosósítása kevéssé előrelátható alakot eredményez, ezért inkább ösztöneinkre és tapasztalataikra támaszkodunk, mint tudatos stratégiára. Görbecsaládok segítségével már sokkal könnyebb a helyzet. Ezt úgy képzeljük el, hogy vegyünk két görbét. Az egyiket mozgassuk el a másikon. Az első lesz a leírógörbe a másik pedig a pálya görbe. A leírógörbét nem fogjuk merevnek tekinteni, hanem a pályagörbe menti helyzetétől függően változtatja alakját. Ehhez majd két paraméter lesz szükséges, az első a leírógörbe saját paramétere, a másik a pályagörbe ívhossza, amelytől a leírógörbe megint csak függeni fog. Tehát egy felületet értelmeztünk. Az egyik legkényelmesebb és legegyszerűbb a kontrolpontrácsra való illesztés. Ebben az esetben a megszerkesztett kontrolpontrácsra mint a síkgörbék esetén különböző interpolációs és approximációs eljárással fogjuk a görbéinket illeszteni. A kontrollpontokat összekötő törtvonalakat pedig a karakterisztikus keret mintájára karakterisztikus poliédernek vagy kontrol poliédernek fogjuk nevezni. Ezzel majd a következő részben fogunk foglalkozni részletesebben.

Kvadratikus felületek

Végül, de nem utolsó sorban fontos megemlíteni, hogy egy igen fontos felületosztályhoz juthatunk, ha olyan implicit egyleteket tekintünk, ahol bármely változó legfeljebb másodfokú alakban szerepelhet. Az összes ilyen egyenlet megadható egy általános, homogén koordinátás alakban:

Ahol Q egy 4x4-es konstans együtthatómátrix.

A kvadratikus felületek speciális típusai a gömb, a hengerpalást, a kúp, a parabolid, a hiperbolid, stb. A képen látható első felület egy ellipszoid, egyenlete x2/a2+y2/b2+z2/c2-1=0. A második felület egy végtelenített kúp, egyenlete x2/a2+y2/b2-z2=0. Az utolsó pedig egy végtelen hengert ábrázol, aminek az egyenlete: x2/a2+y2/b2=0. Természetesen ezeket az alakzatokat megadhatjuk őket gömbi koordinátarendszer szögei segítségével paraméteresen is. Így az ellipszoid paraméteres elállítása ez lenne:

X=a*sina *cos b a Î [ 0,2p ]

Y=b*sina *sinb b Î [ 0,p ]

Z=c*cosa

A paraméteres előállítása azért szerencsés, mert lehetővé teszi a tájékozódást a felületen. A paraméterek között értelmezett összefüggés általában egy görbét határoz meg a felületen. Ha az egyik paraméter állandó lenne, akkor a fenti egyenletek által meghatározott görbéket paramétergörbéknek fogjuk nevezni. Hogy jobban megértsük miről is van szó, képzeljünk el egy fölgömböt, nos azon a délkörök és a szélességi körök mind paramétergörbék

Felületek megjelenítése

A vektorgrafikus objektumok raszteres képét csak egyenes szakaszokkal, "összerakott" alakzatokból tudjuk előállítani. Ezért a görbék és felületek modellezésében fontos szerepet töltenek be az egymáshoz kapcsolódó egyenes szakaszokból felépített poligonok és a sokszöglapokból álló térbeli alakzatok, a poliéderek. Tehát a raszteres képernyőn a térbeli görbéket mindig poligonokkal, a felületeket pedig sokszöglapokkal, legtöbb esetben három szögekkel felépített alakzatokkal közelítjük, de egyenesekkel is kirajzolhatjuk. A felületeket most már tudjuk, hogy paramétervonalaik segítségével, azok hálójával könnyedén ábrázolhatjuk.

A legegyszerűbb ábrázolás a drótvázas megjelenítés itt is, de kevésbé szemléletesebb. Ezt úgy érhetjük el, hogy a felület paramétergörbéit térgörbékként megjelenítjük, az esetleges takarásokat pedig nem vesszük figyelembe. Olyan mintha a felület üvegből lenne, és át tudnánk rajta látni. A gyakorlati részben mi is ezt fogjuk alkalmazni. Viszont már most érdemes azon elgondolkozni, hogy miként lehet elérni a képies megjelenítést. Itt ugyancsak a paramétervonalak hálójából indulunk ki, de a hálószemeket síkidomoknak tekintjük. Hogy ezt megtehessük, először is a következőket kell megértenünk. Ha adott egy modellezni kívánt térgörbe vagy felület r=r(t) illetve r=r(u,v) vektor-skalár egyenlete, akkor a képernyőn való kirajzolást megadhatjuk a következő módon is: Először is felosszuk a paramétertartományt D t illetve felület esetében D u, D v részekre, és az osztópontok legyenek : t1, t2, t3, ti-1, ti, …tn illetve

u1, u2, u3, ui-1, ui, …un

v1, v2, v3, vi-1, vi, …vn

    ahol ti-ti-1=D t, ui-ui-1=D u, és vi-vi-1=D v.

Ezután fogjuk és behelyettesítjük az összes ti, ui és vi értéket, és határozzuk meg a görbe, illetve a felület pontjaihoz vezető r(ti) és r(ui,vi) helyvektorokat. Az egymást követő r(ti) és r(ti+1) pontok között a térgörbét közelítsük egyenes szakaszokkal, a felülete pedig az r(ui,vi), r(ui,vi+1) és r(ui+1,vi) és ábrázoljuk r(ui+1,vi+1) csúcspontú négyszöggel. Az így kialakult alakzatot vetítsük a 2D-s ábrázolási térbe, majd raszteresen a képsíkhoz viszonyított magasságuknak megfelelő fordított sorrendben megjelenítjük a képernyőn, így a megfigyelőhöz közelebb álló felületelemek fogják a távolabb lévőket takarni és így helyes képet kapunk. Nyilvánvaló a kép minősége attól függ, hogy a paramétertartományban az osztópontok milyen sűrűn helyezkednek el. Így például, ha D t értéke elég kicsi, a képernyőn kirajzolt térgörbe folytonosnak fog tűnni. Kézenfekvő ezek után, hogyha az osztópontok számát megemeljük, akkor növekedni fog az algoritmus műveletigénye is.

Nos ennyi lett volna mára, ha bármi kérdés felmerülne keressetek meg bátran, és ha tudok válaszolok ígérem. Addig is sok sikert, és próbálkozzatok minél többet.

Felhasznált és ajánlott irodalom:

Foley, van Dam, Feiner, and Hughes: "Számítógépes grafika: Alapelvek és gyakorlat" c.
Dr. Szirmay-Kalos László: Számítógépes grafika, 2001
Scharnitzky Viktor: Vektorgeometria és lineáris algebra, 1999 (alap!)
L. Ammeraal: Programming Principles in Computer Graphics
Bárczy-Barnabás: Differenciálszámítás, 2001
Turcsányi Tamás, Debreceni Egyetem, 2000
Budai Attila: Számítógépes grafika, 1999
Füzi János: Grafikai Alkalmazások Delphi Nyelven, 2000
Füzi János: Interaktív grafika, 1997