Számítógépes grafika tanfolyam - 4. feladat

A feladat célja a geometriai objektumok két- és háromdimenziós térben való működtetésének képessége, a morfálás geometriai objektumainak koncepciója, az egyszerű vizuális megjelenítés készsége az OpenGL segítségével.

Olyan programot kell létrehoznod, amely lehetővé teszi, hogy egy bizonyos alakú két- és háromdimenziós objektumokat alakítson ki.

Számítógépes grafika tanfolyam - 4. feladat

Számítógépes grafika tanfolyam - 4. feladat

1. ábra Példák a két- és háromdimenziós terek morfizálására.

Lehet letölteni egy példát a feladat végrehajtására a háromdimenziós térben.

A javasolt algoritmus

A sík domború figurák lehetséges megvalósítását adjuk. Az algoritmus nyilvánvalóan a háromdimenziós ábrák esetében általánosítható.

Az algoritmus részletes leírása megtalálható a csatolt cikkben.

Tekintsük azt a folyamatot, amely egy konvex A ábrát egy konvex B ábrán mutat.

Hagyja a morfizálást a [0,1] időintervallum alatt. Meg kell adni az AB (t) értéket minden egyes t időpontnál [0,1], úgy, hogy AB (0) = AB AB (1) = B. AB idővel változik.

I. fázis. Ábrák bemutatása.

Az A ábra arcain keresztül vonalak húzódnak - nevezzük őket határvonalaknak. Az egyenes vonal által határolt szám A ''.

A határvonalak párhuzamos fordítását olyan módon végezzük, hogy A "a B ábrát tartalmazó minimális szám (2. Az arcok párhuzamos átadását a 2a, 2b, 2c ábrák mutatják. Az 1. ábrán. A 2d az eredményt mutatja: az eredeti "leírt" az utolsó. Ha az átruházást véges időre elvégezzük, az A-nak A-ba történő átalakítását kapjuk ":

Ugyanígy létrejön az A kép B ábrája és a B '= B' (t) morfálás. A kép felépítését az 1. ábrán mutatjuk be. 3a-d.

2. ábra Számadatok leírása.

Fig.3 ábra leírása.

II. Morfium.

A konstrukció egy folytonos morfium számok az A és B egymással egyidejűleg képződött morfium A az A „és B” a B minden t a [0,1] AB „(t) van kialakítva ábra. amely az A '(t) és a B' (t) metszéspontja. A közbenső ábrák előállításának folyamata a 3. ábrán látható. 4a. Az eredmény a Pic. 4b.

Ábra: A morfizálási folyamat.

Számítógépes grafika tanfolyam - 4. feladat

Ábra: A morfálás folyamata.

AB '(0) = A
AB '(1) = B
Az AB idővel simán változik

A háromdimenziós eset algoritmusának részletes leírása

Megjegyzés: azoknak, akik az elmét lineáris algebra segítségével szeretnék gyakorolni, javasoljuk, hogy hagyja el ezt a szakaszt. A többit részletesen leírjuk, hogyan oldjuk meg a problémát.

1. lépés: Az ábrák ábrázolása.

Tegyük fel, hogy a merőlegesek A ábra kifelé irányulnak, fogják hívni egy fél-térben a relatív szembe (vagy egy sík tartalmazó kötött) számadatok és a pozitív (P + (a)), ha a normál az arc irányul, hogy a fél-térben.

Állítsa be a morfálás felbontását (az A és B közötti köztes számok számát) - N.

Az A arcát vesszük. Az azt tartalmazó síkot jelöljük, a. A minimális vektort kiszámítjuk. oly módon, hogy az A és B ábrák teljesen az a. d-ből való átváltással nyerhető.

A B. ábra összes csúcsa között megtaláljuk a legtávolabbi M csúcsot a síkból a és a P + (a) -on. A vektor egy tetszőleges a-tól M-ig terjedő vektorra való vetülete a normál a értékre a szükséges d vektor.

Jelöljük az a-ból kapott síkot, d + (i / N) hozzáadásával. mint (i).

Az A lépések mindegyik oldalára megismételjük az 1. lépést. Az egyes i-hez tartozó kapott felületeket A (i) jelöli.

A B ábrán ugyanazt az eljárást ismételjük meg, azzal a kivétellel, hogy a B ábrán látható b (i) jelölések jelentése b + d * (N-i / N).

2. lépés Morfizálást generál.

A morfálás i-edik lépésének megszerzéséhez meg kell találni egy olyan számot, amelyet az A (i) és a B (i) síkok halmazai határolnak. E csoportok egyesülését C (i) -nek nevezzük.

Megtaláljuk a pontok Q 'pontját, ahol a C (i) három vagy több arc metszi.

A Q-tól a Q-tól kapjuk meg, ha a C (i) -ben lévő legalább egy sík pozitív féltérben lévő pontjait eldobjuk.

Formázza az intermedier ábráit a Q pontokból.

Minden C (i) síkon megtaláljuk a Q pontokat. A hozzá tartozó pontok (a síktól a pontig terjedő távolság nulla). Ezek a pontok az arc csúcspontjai.

Számoljuk a pontokat úgy, hogy konvex sokszöget alkotnak. Válasszuk ki a b vektort. összekapcsolva két, tetszőlegesen kiválasztott A és B pontot a kérdéses készletből. Jelöljük n a normál értéket a síkra, amelyhez a készlet pontjai tartoznak (a sík a készlet bármelyik három pontjából megtalálható). A készlet pontjának számozását a szög szögének megfelelően kell elvégezni, amelynél a b körül az A körül forgatni kell, hogy az n és q áthaladó sík. a készletbıl eltérı A és B pontot tartalmazott, azaz a vektorok b és c = AC között. Megjegyzés: a számozás során ne feledje el, hogy meg kell találnia a kapott arc normálját.

Megjegyzés: a 3. lépésben megoldott feladat egy konvex hajótest keresése a Q pontok készletéhez. Több elegáns algoritmus létezik a probléma megoldására. Az ilyen algoritmusok végrehajtása egy alkalom arra, hogy bónuszt kapjunk.

Kötelező rész

A kötelező rész feltételezi a domború sokszögek morfizálását kétdimenziós térben. A programban mereven meghatározott kezdeti és végső sokszögek találhatók. A felhasználó parancsára a morfizálási folyamat elindul.

A morfálás folyamatának jól láthatónak kell lennie a képernyőn - a folyamat sebességének ésszerűnek kell lennie.

Az első és a végső számoknak jelentősen különbözniük kell: csúcspontok, élek stb.

A síkszámok helyett (vagy azok mellett) a háromdimenziós térben lehet morfizálást végrehajtani - ez a lehetőség több pontot ad. A folyamat látható az OpenGL könyvtár használatával.

További rész

Az alábbiakban felsoroljuk azokat a lehetőségeket, amelyekhez további pontokat kaphat.

A morfálás előrehaladásának vezérlése: a gombok előre, hátra, szüneteltetése, a morfálás egy lépése.

Poligon vagy sokszög modellek olvasása fájlból.

A kétdimenziós eset fájlformátuma:

Mindegyik sor tartalmazza a térközzel elválasztott csúcs koordinátákat. A csúcs száma megegyezik a vonalszámmal. A csúcs számozása az óramutató járásával megegyező. A csúcs koordinátái valós számok, a tartomány [-1,1].

A háromdimenziós eset fájlformátuma:

MESH_FILE. =
MESH_VERTEX_LIST <>
MESH_FACE_LIST <>
>

Megjegyzés: a leírásban a szimbólum <и лексемы MESH_VERTEX_LIST, MESH_FACE_LIST нужно рассматривать как строковые константы. - целое неотрицательное число, - вещественное число в диапазоне [-1,1].

Színek vagy textúrák összekeverése. Színezés - a fokozatos színváltozás az egyik alak átalakításának folyamatában. A textúra összekeverése: a textúrák az eredeti és a target polyhedron modellekre kerülnek. A közbülső morfamodellek szerkezete a forrás és a végleges modellek textúráinak keveréke, amelyet többnyelvű OpenGL segítségével nyernek (lásd a feladatok anyagait).

Példák a poligonok és a poliéderek modelljeire:

bejegyzés

A formatervezés nem különbözik a megszokottól.

ZIP-fájlt a forráskód és a futtatható fájlokat, nevezett eljárás szerinti GZV_nnnnnnnn.zip (ahol G - az utolsó számjegy a csoport szám, Z - feladat száma, V - amelyben a verziószámot, nnnnnnnn - diákigazolvány szám), hogy küldjön [email protected]. msu.su

Például egy diák 206 csoportok tanulói azonosító száma 06529042, mely frissített (második) változata a második feladat a program küldjön egy fájl nevét 622_06529042.zip.

Ne felejtsük el elhelyezni a readme.txt fájlt az archívumba. A fájlban írja le a program interfészt (az algoritmust a programhoz, a menüpontokhoz, a vezérlőgombokhoz)

A munka eredményei

Az eredmények az interneten és / vagy a 703-as terem közelében állnak.

jegyzetek

  1. A feladat szigorúan egyedi. Együttmûködésre vagy kódkódok cseréjére -5 pontot rendelünk minden résztvevõhöz, ha a csapatmunka tényét a feladatok readme.txt-jában nem határozta meg.
  2. Javasoljuk, hogy írjon egy programot a Windows család számára. Más operációs rendszerekre való írás nem kívánatos, és késlelteti az ilyen munkák ellenőrzését.