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

Rohamcsiga (vitalap | szerkesztései)
Hozzáadtam a "fényt megtörő anyagok részt"
Rohamcsiga (vitalap | szerkesztései)
1 193. sor: 1 193. sor:
** Gyakori hiba ennek a reciprok képzésnek a lehagyása.
** Gyakori hiba ennek a reciprok képzésnek a lehagyása.
* Fontos még, hogy a Fresnel egyenletben kifele menet is ugyan azt a törésmutatót kell használni. Az F0 kiszámolásakor az egyesek a levegő törésmutatója helyén állnak, általános esetben a képlet a <code>((n1 - n2)^2 + k*k) / ((n1 + n2)^2  + k*k)</code> alakot veszi fel. Ez a képlet viszont n1 és n2 szempontjából szimmetrikus, így '''nem kell két F0-t számolni''', egyet a befele, egyet meg a kifele menő sugarakhoz.
* Fontos még, hogy a Fresnel egyenletben kifele menet is ugyan azt a törésmutatót kell használni. Az F0 kiszámolásakor az egyesek a levegő törésmutatója helyén állnak, általános esetben a képlet a <code>((n1 - n2)^2 + k*k) / ((n1 + n2)^2  + k*k)</code> alakot veszi fel. Ez a képlet viszont n1 és n2 szempontjából szimmetrikus, így '''nem kell két F0-t számolni''', egyet a befele, egyet meg a kifele menő sugarakhoz.
* Csak olyan törő anyagokkal foglalkozunk, amiknek a törésmutatója a hullámhossztól független. A nem így viselkedő anyagok, a prizmák nagyon látványos képeket tudnak eredményezni, de sokkal számításigényesebbek és bonyolultabbak, ezért most nem fogok velük foglalkozni.
* Ezt felhasználva:
* Ezt felhasználva:


1 199. sor: 1 200. sor:
   float n, n_rec;
   float n, n_rec;
   
   
   RefractiveMaterial(Color n, Color k)
   RefractiveMaterial(float n, Color k)
     : ReflectiveMaterial(n, k), n((n.r + n.g + n.b) / 3), n_rec(1 / this->n)
     : ReflectiveMaterial(Color(n), k), n(n), n_rec(1/n)
   { }
   { }