Görbék, felületek.

Slides:



Advertisements
Hasonló előadás
Készítette: Nagy Mihály tanár Perecsen, 2006.
Advertisements

Koordináták, függvények
Tömbök C#-ban.
Számítógépes geometriai leíró nyelvek
Geometriai modellezés
Geometriai modellezés
GPGPU labor I. OpenGL, Cg.
Digitális Domborzat Modellek (DTM)
Regresszió számítás Mérnöki létesítmények ellenőrzése, terveknek megfelelése Geodéziai mérések – pontok helyzete, pontszerű információ Lineáris regresszió.
Függvények BMEEPAGA301 Építész informatika 1
Csoportosítás megadása: Δx – csoport szélesség
5. előadás (2005. március 22.) Függvények definíciója, deklarációja, hívása Enumerációs adattípus 1.
Virtuális méréstechnika Görbe illesztése 1 Mingesz Róbert V
Halmazok, relációk, függvények
Számítógépes grafika, PPKE-ITK, Benedek Csaba, D képszintézis 4. előadás.
Számítógépes grafika, PPKE-ITK, Benedek Csaba, 2010 Geometriai modellezés 2. előadás.
Textúrák, világmodellek
Modellezés és tervezés c. tantárgy Óbudai Egyetem Neumann János Informatikai Kar Intelligens Mérnöki Rendszerek Intézet Mérnöki Informatikus MSc 4. Előadás.
A virtuális technológia alapjai c. tantárgy Óbudai Egyetem Neumann János Informatikai Kar, Alkalmazott Matematikai Intézet 2. Előadás Tömör testek modellje.
Mérnöki objektumok leírása és elemzése virtuális terekben c. tantárgy Budapesti Műszaki Főiskola Neumann János Informatikai Kar Intelligens Mérnöki Rendszerek.
Modellezés és szimuláció c. tantárgy Óbudai Egyetem Neumann János Informatikai Kar Alkalmazott Matematikai Intézet Mechatronikai Mérnöki MSc 2. Kontextuális.
Dr. Horváth László – PLM – CCM – 2. előadás: Határfelület-ábrázolás és Euler -i topológia A CAD/CAM modellezés alapjai Dr. Horváth László Budapesti.
Modellezés és tervezés c. tantárgy Óbudai Egyetem Neumann János Informatikai Kar Alkalmazott Matematikai Intézet Mérnöki Informatikus MSc 4. Előadás A.
Az ACIS modellező rendszer Dr. Horváth László. Alapvető jellemzők A Spatial Technology Inc. terméke. Objektum orientált és kereskedelmi modellező alapját.
Modellezés és szimuláció c. tantárgy Óbudai Egyetem Neumann János Informatikai Kar Intelligens Mérnöki Rendszerek Intézet Mechatronikai Mérnöki MSc 10.
Budapesti Műszaki Főiskola Bánki Donát Gépészmérnöki Főiskolai Kar Forgácsolási technológia számítógépes tervezése 2. Előadás 2,5 tengelyű marási ciklusok.
Mérnöki objektumok leírása és elemzése virtuális terekben c. tantárgy Budapesti Műszaki Főiskola Neumann János Informatikai Kar Intelligens Mérnöki Rendszerek.
A virtuális technológia alapjai
A GEOMETRIA MODELLEZÉSE
PTE PMMK Matematika Tanszék dr. Klincsik Mihály Matematika III. előadások MINB083, MILB083 Gépész és Villamosmérnök szak BSc képzés 2007/2008. őszi félév.
2D képszintézis és textúrák
Tömbök Csernoch Mária.
Diplomamunka Geometriai invariánsokat interpoláló rekurzívan finomítható felületek Valasek Gábor ELTE IK, 2008.
Geometriai invariánsokat interpoláló rekurzívan finomítható felületek
Alapalakzatok Készítette: Varga Marianna Sáfrán Péter Stadler Kolos.
Számítógépes grafika 3. gyakorlat.
2. Koordináta-rendszerek és transzformációk
Számítógépes Grafika Programtervező informatikus (esti)‏ Textúrázás.
B-SZPLÁJN GÖRBÉK Dr. Horváth László.
Bevezetés az alakmodellezésbe II. Budapesti Műszaki Főiskola Neumann János Informatikai Főiskolai Kar A Műszaki Tervezés Rendszerei 2000/2001 tanév, I.
Budapesti Műszaki Főiskola Bánki Donát Gépészmérnöki Főiskolai Kar Forgácsolási technológia számítógépes tervezése 3. Előadás Felületek megmunkálásának.
Turbo Pascal 11..
VI. Konténerek 18. Tömbök 19. Rendezés, keresés, karbantartás
2.2. Az egyenes és a sík egyenlete
1. MATEMATIKA ELŐADÁS Halmazok, Függvények.
Programozás I. Típus algoritmusok
Bevezetés a számítógépi grafikába 2. Paraméteres görbék Paraméteres görbe: 2D-ben: paraméter: általában: kikötések: legyen folytonos legyen folytonosan.
Funkciós blokkok A funkciós blokkok áttekintése Az alkalmazás előnyei.
x1 xi 10.Szemnagyság: A szemnagyság megadásának nehézségei
előadások, konzultációk
Számítógépes grafika, PPKE-ITK, Benedek Csaba, 2010 Geometriai modellezés 2. előadás.
előadások, konzultációk
Hermite-interpoláció
A 2. géptermi beszámoló VBA anyagának összefoglalása
Képek, képfeldolgozás Szirmay-Kalos László.
Függvények, mutatók Csernoch Mária. Függvények függvény definíciója az értelmezési tartomány tetszőleges eleméhez hozzárendel egy értéket –függvény helyettesítési.
Algoritmusok és adatszerkezetek elemzése II.
Függvények, mutatók Csernoch Mária. Függvények függvény definíciója az értelmezési tartomány tetszőleges eleméhez hozzárendel egy értéket –függvény helyettesítési.
1 OpenGL grafikus rendszer Dr. Nehéz Károly egyetemi adjunktus Miskolci Egyetem Alkalmazott Informatikai Tanszék.
Kontinuum modellek 1.  Bevezetés a kontinuum modellekbe  Numerikus számolás alapjai.
Alapvető raszteres algoritmusok, szakasz rajzolása, DDA, MidPoint algoritmus.
„Designer-barát” játéklogika
Mediánok és rendezett minták
Technológiai folyamatok optimalizálása
OpenGL IV.
A CLIPS keretrendszer
GPGPU – CUDA 2..
OpenGL II.
JAVA programozási nyelv NetBeans fejlesztőkörnyezetben I/13. évfolyam
Előadás másolata:

Görbék, felületek

Miről lesz szó? Geometriai modellezés alapjai Bezieer görbék, felületek Evaluátorok, Nurbs felületek Példák

Görbék definiálása Megadás képlet segítségével: Megadott szabályszerűség követése, (analitikus) Megadás kontrollpontok segítségével: Megadott pontokon való áthaladás, (interpolációs) Megadott pontok közelítése (approximációs)

Szabadformájú görbék å Polinomok: A polinomegyütthatóknak (a,b) nincs szemléletes tartalma, ezért a modellezés során használatuk kényelmetlen. ] 1 , [ ) ( Î = å t b y a x n i

Interpolációs módszerek Lineáris interpoláció: a kontrollpontokat egyenesek kötik össze. Három ponton körív, négy ponton pedig harmadfokú görbe vezethető át. Lagrange francia matematikus interpolációs polinomokat alkalmazott. Tegyük fel, hogy a a megadott vezérlőpontok sorozata: r1,r2,r3,… rn. Keressük azt a minimális fokszámú L(t) polinomot, amely t1-nél r1, t2-nél r2, tn-nél rn értéket vesz fel. å - = 1 ] , [ ) ( n i j t b a r

å Õ Az egyenletrendszert megoldjuk [ai,bi]-re. Megoldás: A Lagrange interpoláció hátrányai: A görbe hajlamos az oszcillációra Nem alakítható lokálisan . ) ( ahol , 1 Õ å ¹ = - i j n t L r

Bézier-approximáció å A görbe nem megy át minden kontrollponton A kontrollpontok által meghatározott konvex burkon belül marad. A súlyfüggvény B(t) és a görbe C(t): . ) ( , 1 )) i n m P t B C å = - ÷ ø ö ç è æ + Berstein polinom

Evaluátorok az OpenGL-ben )] , ( ) [ )], v u Z Y X S C = C – curve, S – surface, u,v - paraméterek Görbe esetén – glEvalCoord1D() Felület esetén – glEvalCoord2D()

void glEvalCoord1{fd}{v}(TYPE u); void glMap1{fd}(GLenum target, TYPE u1, TYPE u2, GLint stride, GLint order, const TYPE *points); 1 dimenziós evaluátor létrehozása target: beállítja, hogy mit reprezentálnak a kontrollpontok. (a táblázat a következő fólián) u1, u2: az u változó tartománya stride: a kontrollpontok közötti eltolásérték. order: a kontrollpontok száma points: a kontrollpontok tömbje Több evaluátor is használható egyszerre: pl: GL_MAP1_VERTEX_3 és GL_MAP1_COLOR_4 esetén pozíció és szín generálható. De vertex evaluátor egyszerre csak 1 lehet! void glEvalCoord1{fd}{v}(TYPE u); argumentumként megadott u helyen generálja a görbe 1 pontját

x,y,z vertex koordináták GL_MAP1_VERTEX_4 x,y,z,w vertex koordináták paraméter jelentés GL_MAP1_VERTEX_3 x,y,z vertex koordináták GL_MAP1_VERTEX_4 x,y,z,w vertex koordináták GL_MAP1_INDEX color index GL_MAP1_COLOR_4 RGBA GL_MAP1_NORMAL normális koordináták GL_MAP1_TEXTURE_COORD_1 s textúra koordináták GL_MAP1_TEXTURE_COORD_2 s,t textúra koordináták GL_MAP1_TEXTURE_COORD_3 s,t,r textúra koordináták GL_MAP1_TEXTURE_COORD_4 s,t,r,w textúra koordináták

Példa bezcurve/bezcurve.cpp

Példa Próbáljuk ki GL_POINTS-t a GL_LINE_STRIP helyett. A kontrollpontokat módosítsuk, és figyeljük meg a változást. Egyenközű koordinátaértékek létrehozása: a display() görbekirajzolást töröljük, majd helyére a következő két sort szúrjuk be: glMapGrid1f(30, 0.0, 1.0); glEvalMesh1(GL_LINE, 0.0, 30.0);

Egyenlő felosztás glMapGrid1{fd}(GLint n, TYPE u1, TYPE u2); glEvalMesh1(GLenum mode, GLint p1, GLint p2); mode: GL_LINE, GL_POINT A hatás ekvivalens a következő kódrészlettel: glBegin(GL_POINTS); // vagy glBegin(GL_LINE_STRIP); for( i = p1; i <= p2; i++) { glEvalCoord(u1 + i * (u2-u1) / n); } glEnd();

Kétdimenziós evaluátorok å = n i m j ij P v B u S ) ( , Pij : a kontrollpontok száma m*n Bi : a Bernstein polinomok, ugyanaz mint 1D esetben Pij reprezentálhat vertexeket, normálisokat, színeket, textúra koordinátákat az 1D esthez hasonlóan. A felületek megadása a következőképpen történik: 1: evaluátorok definiálása: glMap2*() – vel. 2: glEnable() - típus beállítása (vertex, color, textura, stb..) 3: kirajzolás: glEvalCoord2*() –vel, vagy glMapGrid2() és glEvalMesh2() - vel.

void glMap2{fd}(GLenum target, TYPE u1, TYPE u2, GLint ustride, GLint uorder, TYPE v1, TYPE v2, GLint vstride, GLint vorder, TYPE *points); target paraméter ugyanaz mint 1D esetben. u1, u2, v1, v2: u,v minimum-maximum lehetséges értékei. ustride, vstride: kiválasz egy részhalmazt a kontrollpontokból. Például: float pontok[100][100][3]; akkor egy 4x4-es részhalmaz beállításához a [20][30]-tól kezdve: ustride=100*3; vstride= 3, point = &pontok[20][30][0]

glEvalCoord2{fd}{v}(TYPE u, TYPE v); GL_MAP2_VERTEX_3, GL_MAP2_VERTEX_4 – esetén a normálvektorokat analitikusan számítja a rendszer. glEnable(GL_AUTO_NORMAL) segítségével a kiszámolt normálisok alkalmazhatóak. glDisable(GL_AUTO_NORMAL) esetén az éppen beállított normálvektor érvényesül.

Példa: Bézier-felület bezsurf.cpp

Feladatok Jelenítsük meg a felület kontrollpontjait. Alkalmazzuk a glEvalMesh2(GL_LINE,…); beállítást. Tegyük automatikusan forgóvá a felületet.

Egyenközű koordináta értékek glMapGrid2{fd}(GLint nu, TYPE u1, TYPE u2, GLint nv, TYPE v1, TPYE v2); glEvalMesh2(GLenum mode, GLint p1, GLint p2, GLint q1, GLint q2); A beállítások ekvivalensek a következő kódrészlettel: (GL_FILL mód esetén): for(i = nu1; i< nu2; i++) { /* GL_FILL mód glBegin(GL_QUAD_STRIP); for( j = nv1; j <= nv2; j++) { glEvalCoord(u1 + i * (u2-u1) / nu, v1+j * (v2-v1) / nv); glEvalCoord(u1 + (i+1) * (u2-u1) / nu, v1+j * (v2-v1) / nv); glEnd(); }

Automatikus textúra koordináta generálás texturesurf.cpp

Feladat a textúrát töltsük be fájlból (bmp) a régi forráslisták felhasználásával!

Példa editgrid.cpp