„Számítógépes grafika házi feladat tutorial” változatai közötti eltérés
aNincs szerkesztési összefoglaló |
a Az első két házi példaprogramjait migráltam pastebinről |
||
| 272. sor: | 272. sor: | ||
* Projekció 2D-ben: a fényképezés módja nagyon egyszerű, egyszerűen eldobjuk a 'z' koordinátát, és az x-y pozíció alapján rajzolunk. Vagy legalábbis ezt csináltuk eddig, de az NDC nem volt kényelmes. Itt viszont lehetőséget kapunk saját koordináta-rendszer megválasztására, ahol az egység lehet pl. 1 méter, és a kamera pedig mondjuk követhet egy karaktert egy játékban. | * Projekció 2D-ben: a fényképezés módja nagyon egyszerű, egyszerűen eldobjuk a 'z' koordinátát, és az x-y pozíció alapján rajzolunk. Vagy legalábbis ezt csináltuk eddig, de az NDC nem volt kényelmes. Itt viszont lehetőséget kapunk saját koordináta-rendszer megválasztására, ahol az egység lehet pl. 1 méter, és a kamera pedig mondjuk követhet egy karaktert egy játékban. | ||
* Példaprogram: [ | * Példaprogram: [[Média:Grafpp_sidescroller.cpp|Sidescroller]] | ||
<br/> <syntaxhighlight lang="c"> | <br/> <syntaxhighlight lang="c"> | ||
| 308. sor: | 308. sor: | ||
* Egy transzformáció meghívásakor annak a mátrixa hozzászorzódik a GL_MODELVIEW mátrixhoz (balról). Emlékeztető: a mátrix szorzás, és a mátrix-vektor szorzás asszociatív. Ez azt jelenti, hogy két transzformációs mátrix összeszorzása után az eredmény ugyan úgy transzformál egy tetszőleges vektort, mint ha a két mátrixszal külön szoroztuk volna be. | * Egy transzformáció meghívásakor annak a mátrixa hozzászorzódik a GL_MODELVIEW mátrixhoz (balról). Emlékeztető: a mátrix szorzás, és a mátrix-vektor szorzás asszociatív. Ez azt jelenti, hogy két transzformációs mátrix összeszorzása után az eredmény ugyan úgy transzformál egy tetszőleges vektort, mint ha a két mátrixszal külön szoroztuk volna be. | ||
* A transzformációk fordított sorrendben fejtik ki hatásukat, mint ahogy meghívjuk őket, de ez így intuitív, így haladhatunk a hierarchiában föntről lefele, ha nem így lenne, akkor pl. egy autó kirajzolásánál, azzal kéne kezdenünk, hogy megmondjuk, hogy a dísztárcsa a kerékhez képest hogy helyezkedik el, és csak a legvégén mondhatnánk meg, hogy az autó egyáltalán hol van. | * A transzformációk fordított sorrendben fejtik ki hatásukat, mint ahogy meghívjuk őket, de ez így intuitív, így haladhatunk a hierarchiában föntről lefele, ha nem így lenne, akkor pl. egy autó kirajzolásánál, azzal kéne kezdenünk, hogy megmondjuk, hogy a dísztárcsa a kerékhez képest hogy helyezkedik el, és csak a legvégén mondhatnánk meg, hogy az autó egyáltalán hol van. | ||
* [ | * [[Média:Grafpp_transzf_sorrend.cpp|Példa a transzformációk sorrendjére]]: | ||
<br/> <syntaxhighlight lang="c"> | <br/> <syntaxhighlight lang="c"> | ||
glTranslatef(2.7f, -3.1f, 0.0f); | glTranslatef(2.7f, -3.1f, 0.0f); | ||
| 321. sor: | 321. sor: | ||
- Intuitív, pontosan az történik, mint amit a kódról első ránézésre hinnénk, hogy csinál, az origó a transzformáció után a (2.7, -3.1) pontba kerül, a nagyítás az x tengely mentén 2, az y tengely mentén 2.5. <br/> <br/> | - Intuitív, pontosan az történik, mint amit a kódról első ránézésre hinnénk, hogy csinál, az origó a transzformáció után a (2.7, -3.1) pontba kerül, a nagyítás az x tengely mentén 2, az y tengely mentén 2.5. <br/> <br/> | ||
* [ | * [[Média:Grafpp_transzf_sorrend2.cpp|Egy másik lehetséges sorrend]]: | ||
<br/> <syntaxhighlight lang="c"> | <br/> <syntaxhighlight lang="c"> | ||
glScalef(2, 2.5f, 1); | glScalef(2, 2.5f, 1); | ||
| 395. sor: | 395. sor: | ||
** Technikailag a 3D rajzolást rábízzuk a glut-ra. | ** Technikailag a 3D rajzolást rábízzuk a glut-ra. | ||
*** Kizárólag a <code> glutSolidCube(GLdouble size); </code> függvényt fogjuk használni. | *** Kizárólag a <code> glutSolidCube(GLdouble size); </code> függvényt fogjuk használni. | ||
*** Ez a függvény - nem meglepő módon - egy 'size' élhosszúságú [ | *** Ez a függvény - nem meglepő módon - egy 'size' élhosszúságú [[Média:Grafpp_glutSolidCube.cpp|kockát rajzol ki]]: | ||
<div style="text-align:left;margin:0px auto;"> | <div style="text-align:left;margin:0px auto;"> | ||
http://i.imgur.com/PA2A3eQ.png | http://i.imgur.com/PA2A3eQ.png | ||
</div><br/> | </div><br/> | ||
* Ezt felhasználva a példaprogram: [ | * Ezt felhasználva a példaprogram: [[Média:Grafpp_robot_kar.cpp|Robot kar]] | ||
** A program irányítása: | ** A program irányítása: | ||
*** 'q' - Ujjak szétnyitása, 'a' - Ujjak összezárása | *** 'q' - Ujjak szétnyitása, 'a' - Ujjak összezárása | ||
| 544. sor: | 544. sor: | ||
**** Gyakori implementációja a közelítőleg c2 folytonos Catmull-Rom görbe (Ezt akkor kapjuk, ha a Kochanek–Bartels összes paraméterét nullának választjuk). | **** Gyakori implementációja a közelítőleg c2 folytonos Catmull-Rom görbe (Ezt akkor kapjuk, ha a Kochanek–Bartels összes paraméterét nullának választjuk). | ||
* Példaprogram: [ | * Példaprogram: [[Média:Grafpp_tcr_gorbe.cpp|Tenziós Catmull-Rom görbe]] | ||
<div style="text-align:left;margin:0px auto;"> | <div style="text-align:left;margin:0px auto;"> | ||
http://i.imgur.com/C1iKaHx.gif | http://i.imgur.com/C1iKaHx.gif | ||