„Számítógépes grafika házi feladat tutorial” változatai közötti eltérés

Rohamcsiga (vitalap | szerkesztései)
Rohamcsiga (vitalap | szerkesztései)
578. sor: 578. sor:


* A kamera megvalósítása már egy picit trükkösebb
* A kamera megvalósítása már egy picit trükkösebb
** Meg kell adnunk a képzeletbeli kamera pozícióját. Kódban pl: <code> pos </code>.
** Meg kell adnunk a képzeletbeli kamera pozícióját. Kódban pl: <code>pos</code>.
** Meg kell adnunk, hogy a kamera, merrefelé néz. Kódban pl: <code> fwd </code> (egységvektor).
** Meg kell adnunk, hogy a kamera, merrefelé néz. Kódban pl: <code>fwd</code> (egységvektor).
** Azt is tudnunk kell, hogy melyik iránynak felel meg a felfele ("What's up?"). Kódban pl: <code> up </code>.
** Azt is tudnunk kell, hogy melyik iránynak felel meg a felfele ("What's up?"). Kódban pl nevezzük <code>up</code>-nak.
** Tegyük fel, hogy téglalap (vagy sík) egységnyi távolságra van a kamerától. Ekkora annak a középpontja: <code> pos + fwd </code>.
** Tegyük fel, hogy téglalap (vagy sík) egységnyi távolságra van a kamerától. Ekkora annak a középpontja: <code>pos + fwd</code>.
** Szükségünk van arra, hogy melyik irányra van jobbra. Ezt a az előre és a felfele pozícióból ki tudjuk számolni: <code> right = cross(fwd, up) </code>.
** Szükségünk van arra, hogy melyik irányra van jobbra. Ezt a az előre és a felfele pozícióból ki tudjuk számolni: <code>right = cross(fwd, up)</code>.
** A felfele vektor amit megadtunk nem biztos, hogy merőleges az előre vektorra, pedig nekünk olyanra van szükségünk. Pl: ha rézsútosan előre és lefele nézünk, de az 'up' vektor az ég fele mutat. Ez igazándiból nem baj, mert a jobbra és előre vektor ismeretében már ki tudjuk számolni a pontos felfele vektort: <code> up = cross(right, fwd) </code>.
** A felfele vektor amit megadtunk nem biztos, hogy merőleges az előre vektorra, pedig nekünk olyanra van szükségünk. Pl: ha rézsútosan előre és lefele nézünk, de az 'up' vektor az ég fele mutat. Ez igazándiból nem baj, mert a jobbra és előre vektor ismeretében már ki tudjuk számolni a pontos felfele vektort: <code>up = cross(right, fwd)</code>.
** Ha ezek megvannak, akkor ki kell tudnunk számolni, hogy egy (x, y) koordinátájú pixelnek a téglalap (amiről most egy egység oldalhosszúságú négyzet) melyik része felel meg. Ezt így tehetjük meg:
** Ha ezek megvannak, akkor ki kell tudnunk számolni, hogy egy (x, y) koordinátájú pixelnek a téglalap (amiről most egy egység oldalhosszúságú négyzet) melyik része felel meg. Ezt így tehetjük meg: