4. gyakorlat: interpolációs és approximációs görbék implementációja



Hasonló dokumentumok
3D-s számítógépes geometria és alakzatrekonstrukció

Görbe- és felületmodellezés. Szplájnok Felületmodellezés

A számítógépes grafika alapjai kurzus, vizsgatételek és tankönyvi referenciák 2014

CAD technikák A számítógépes tervezés geometriai alapjai: görbék típusai, matematikai leírás, manipulációk görbékkel.

Hajder Levente 2018/2019. II. félév

BME MOGI Gépészeti informatika 15.

Információ megjelenítés Számítógépes ábrázolás. Dr. Iványi Péter

A Vonallánc készlet parancsai lehetővé teszik vonalláncok és sokszögek rajzolását.

3D-s számítógépes geometria és alakzatrekonstrukció

21. évfolyam 5. szám. Fizika InfoRmatika Kémia Alapok. Kiadó. Levélcím Cluj, C. P. 1/140

11. gyakorlat Sturktúrák használata. 1. Definiáljon dátum típust. Olvasson be két dátumot, és határozza meg melyik a régebbi.

Geometriai modellezés. Szécsi László

3. Görbe modellezés. Görbe modellezés 1

10. gyakorlat Tömb, mint függvény argumentum

OOP: Java 8.Gy: Abstract osztályok, interfészek

Programozás. (GKxB_INTM021) Dr. Hatwágner F. Miklós április 4. Széchenyi István Egyetem, Gy r

6. gyakorlat Egydimenziós numerikus tömbök kezelése, tömbi algoritmusok

ISA szimulátor objektum-orientált modell (C++)

Számítógépes grafika

4. Öröklődés. Programozás II

x = cos αx sin αy y = sin αx + cos αy 2. Mi a X/Y/Z tengely körüli forgatás transzformációs mátrixa 3D-ben?

Programozás II gyakorlat. 4. Öröklődés

Objektumok inicializálása

BME MOGI Gépészeti informatika 18. Grafika, fájlkezelés gyakorló óra. 1. feladat Készítsen alkalmazást az = +

Algoritmus terv 3. Fejezet: Folyamatok meghatározása

1. Template (sablon) 1.1. Függvénysablon Függvénysablon példányosítás Osztálysablon

Információ megjelenítés Számítógépes ábrázolás. Dr. Iványi Péter

Bevezetés a programozásba II. 5. Előadás: Másoló konstruktor, túlterhelés, operátorok

OAF Gregorics Tibor: Minta dokumentáció a 3. házi feladathoz 1.

Elemi Alkalmazások Fejlesztése II.

Programozás I. 3. gyakorlat. Szegedi Tudományegyetem Természettudományi és Informatikai Kar

3. Osztályok II. Programozás II

BME MOGI Gépészeti informatika 6.

C programozási nyelv Pointerek, tömbök, pointer aritmetika

Programozás alapjai gyakorlat. 4. gyakorlat Konstansok, tömbök, stringek

Mesh generálás. IványiPéter

Java Programozás 4. Gy: Java GUI. Tipper, MVC kalkulátor

CAD-ART Kft Budapest, Fehérvári út 35.

Területi primitívek: Zárt görbék által határolt területek (pl. kör, ellipszis, poligon)

Területi primitívek: Zárt görbék által határolt területek (pl. kör, ellipszis, poligon)

Szoftvertechnolo gia gyakorlat

Programozás alapjai II. (9. ea) C++ többszörös öröklés, cast, perzisztencia

Tömbök kezelése. Példa: Vonalkód ellenőrzőjegyének kiszámítása

3D - geometriai modellezés, alakzatrekonstrukció, nyomtatás

Programozás alapjai. (GKxB_INTM023) Dr. Hatwágner F. Miklós október 15. Széchenyi István Egyetem, Gy r

Johanyák Zsolt Csaba: Ugráló gomb oktatási segédlet Copyright 2008 Johanyák Zsolt Csaba

OOP #1 (Bevezetés) v :39:00. Eszterházy Károly Főiskola Információtechnológia tsz. Hernyák Zoltán adj.

Bevezetés a Programozásba II 11. előadás. Adatszerkezetek megvalósítása. Adatszerkezetek megvalósítása Adatszerkezetek

3D - geometriai modellezés, alakzatrekonstrukció, nyomtatás

2D képszintézis. Szirmay-Kalos László

A számítógépes grafika alapjai kurzus, vizsgatételek és tankönyvi referenciák 2016

Helyes-e az alábbi kódrészlet? int i = 1; i = i * 3 + 1; int j; j = i + 1; Nem. Igen. Hányféleképpen lehet Javaban megjegyzést írni?

components : IContainer dx : int dy : int tmidőzítő : Timer toolstripseparator1 : ToolStripSeparator tsmikilépés : ToolStripMenuItem

Programozás I. Grafika Eseménykezelés. Programozás I. 2. gyakorlat Interakció a grafikus felületen, tagfüggvények. Surányi Márton PPKE-ITK

Téglalap kijelölés opciói

Információs Technológia

Programozás alapjai 9.Gy: Struktúra 2.

Bevezetés a MATLAB programba

Területi primitívek: Zárt görbék által határolt területek (pl. kör, ellipszis, poligon) b) Minden belső pont kirajzolásával (kitöltött)

Web-programozó Web-programozó

Algoritmusok raszteres grafikához

Mechatronika és mikroszámítógépek 2017/2018 I. félév. Bevezetés a C nyelvbe

Tartalom. Geometria közvetlen tárolása. Geometria tárolása - brute force. Valasek Gábor valasek@inf.elte.hu. Hermite interpoláció. Subdivision görbék

Máté: Számítógépes grafika alapjai

BME MOGI Gépészeti informatika 5.

Osztályok. 4. gyakorlat

GenerikusOsztály<objektumtípus> objektum = new GenerikusOsztály<objektumtípus>();

3D Számítógépes Geometria II.

Programozás II gyakorlat. 6. Polimorfizmus

tétel: különböző típusú adatokat csoportosít, ezeket egyetlen adatként kezeli, de hozzáférhetünk az elemeihez is

4. Felületek Forgásfelületek. Felületek 1. Legyen adott egy paramétersíkbeli T tartomány. A paramétersíkot az u és v koordinátatengelyekkel

3D Számítógépes Geometria II.

Java és web programozás

OOP: Java 8.Gy: Gyakorlás

MATLAB. 5. gyakorlat. Polinomok, deriválás, integrálás

7. fejezet: Mutatók és tömbök

SDI ALKALMAZÁS I. Workspace / ResourceView / Toolbar / IDR_MAINFRAME. Workspace / ResourceView / Menu / IDR_MAINFRAME

INFORMATIKA tétel 2018

3D-s számítógépes geometria és alakzatrekonstrukció

Grafikus csővezeték és az OpenGL függvénykönyvtár

OOP: Java 4.Gy: Java osztályok

Java és web programozás

Osztály és objektum fogalma

Vizuális programozás gyakorlat

Bánsághi Anna 2014 Bánsághi Anna 1 of 33

Objektumorientált programozás C# nyelven

Termék modell. Definíció:

Sorosítás (szerializáció) és helyreállítás. 1. Bináris sorosítás és helyreállítás Szükséges névterek Attribútumok. 1.3.

Programozási nyelvek JAVA EA+GY 1. gyakolat

Programozás 5. Dr. Iványi Péter

GÖRBÉK ÉS FELÜLETEK ILLESZTÉSE KÉNYSZEREKKEL II.

Ugráló gomb oktatási segédlet Ugráló gomb

OOP: Java 1.Gy: Java alapok

Szegedi Tudományegyetem Informatikai Tanszékcsoport tanév

Számítógépes grafika

C++ Standard Template Library (STL)

Máté: Számítógépes grafika alapjai

Jegyzet tervezet Összeállította: Dr. Boza Pál fıiskolai tanár 2009

Aradi Bernadett. 2017/18 ősz. TensorFlow konvolúciós hálózatokhoz 2017/18 ősz 1 / 11

Pénzügyi algoritmusok

Átírás:

Pázmány Péter Katolikus Egyetem Információs Technológiai Kar A számítógépes grafika alapjai kurzus, gyakorlati anyagok Benedek Csaba 4. gyakorlat: interpolációs és approximációs görbék implementációja 4.1 feladat Lagrange görbe rajzoló A korábbi vonalrajzoló programunk kódját felhasználva készítsünk Lagrange megjelenítőt! megjelennek a képernyőn. Ezzel egy időben az aktuális kontrolpontokra Lagrange görbét illeszt a program, és ezt a görbét megjeleníti. Adattagok: MyPoint ctrlpoints[maxptnum]; //Ez csak pszeudo kód, a MyPoint -ot önállóan kell reprezentálni valahogy!! int ptnum; //aktuális kontrolpontszám double knotvector[maxptnum]; Együttható számítás: double L( int i, double tt ) { double Li = 1.0; for(int j = 0; j < ptnum; j++) {

if (i!= j) Li *= (tt - knotvector[j]) / (knotvector[i] -knotvector[j]); return Li; Egyenletes knot vektor inicializálás: for (int i=0;i<=ptnum;i++) { knotvector[i]=(double)i/(double(ptnum)); Görbe adott pontjának számítása t paraméterértéknél: MyPoint CalcLagrangePoint (float t) { MyPoint actpt(0,0); for(int i = 0; i <= ptnum; i++) actpt+=ctrlpoint[i]*l(i,t); return actpt; 4.2 feladat Bézier rajzoló A korábbi vonalrajzoló programunk kódját felhasználva készítsünk Bézier megjelenítőt. megjelennek a képernyőn. Ezzel egy időben az aktuális kontrolpontokra Bézier görbét illeszt a program, és ezt a görbét megjeleníti.

A Bézier görbe OpenGL implementációja: Egydimenziós leképezés: void glmap1{fd(glenum target, TYPE u1, TYPE u2, GLInt stride, GLInt order, const TYPE * points) target: mit reprezentálnak a kontrollpontok: modelltérbeli pontot (GL_MAP1_VERTEX_3) vagy színt (GL_MAP1_COLOR_4) stb u1, u2: paramétertartomány (nálunk [0,1]) stride: nálunk a pontok dimenziója (itt 3) order: görbe rendje (kpontok száma+1) points: kontrollpontokat tartalmazó tömb A parancs kiadása előtt engedélyezni kell a leképzés opciót: glenable(gl_map1_vertex_3); Kontroll pontok definiálása GLfloat ctrlpoints[maxptnum][3]; ctrlpoints[i][j] az i-edik kontrolpont j-edik koordinátája 3D pontokkal dolgozik, a pont koordinátái rendre: [x,y,z], 2D-ben z=0-t használjunk void glevalcoord1{fd(type u); az u paraméterértéknél kiértékeli a görbét, azaz meghatározza az aktuális pontot és esetünkben a glvertex*() parancsot is automatikusan végrehajtja rá (tehát azonnal meg is jeleníti) 4.3 feladat NURBS A korábbi vonalrajzoló programunk kódját felhasználva készítsünk NURBS megjelenítőt. megjelennek a képernyőn. Ezzel egy időben az aktuális kontrolpontokra NURBS görbét illeszt a program, és ezt a görbét megjeleníti. Nurbs görbe rajzoló a következő elemeket és lépéseket tartalmazza: Adattagok: GLUnurbsObj *thenurb; //NURBS objektum #define ORDER 3 //NURBS rendje ellentétben Bézierrel, ez tőlünk függő szabad partaméter, nálunk legyen konst 3!

GLfloat ctrlpoints[maxptnum][3]; //kontrollpontok GLfloat knots[maxptnum+order]; //kiértékelés paraméterértékeit (ti-ket) tartalmazó vektor Létrehozás, inicializáció: thenurb=glunewnurbsrenderer(); glunurbsproperty(thenurb,glu_samplin_tolerance, 25.0); glunurbsproperty(thenurb, GLU_DISPLAY_MODE, GLU_FILL); Knot inicializáció: ptnum= <<aktuális kontroll pontok száma>>// knots vektor hasznos része mindig ptnum+order elemű Töltsük fel a knots vektor első ptnum+order elemét: osszuk fel a [0 1] intervallumot egyenletesen ptnum+order részre, és knots[i] legyen i/ (ptnum+order); Teljes Görbe rajzolása: glubegincurve(thenurb); glunurbscurve(thenurb,ptnum+order, knots,3, &ctrlpoints[0][0], ORDER,GL_MAP1_VERTEX_3); gluendcurve(thenurb) 4.4 Implementáljuk a Catmull Clark algoritmust Használjuk a korábbi törött vonal rajzoló programunkat, majd a kapott vonalat simítsuk Catmull algoritmussal! Implementáljuk a simító inverz műveletét is! Az egér bal klikkelésével lehet hozzávenni pontokat a törött vonalhoz, amely egy-egy új szakaszt eredményez, majd a teljes vonal azonnal megjelenik a képernyőn. Ezután j gomb leütésével simíts egyet a vonalon, és n leütésével csökkentsd a simítást alap j lenyomás után

j lenyomás után n lenyomás után