Курсовая работа: Отрисовка сцены "Отражающиеся дорожки" алгоритмом обратной трассировки лучей

WorkVector poffset = p.add (luch.mul(TINY)); // к основанию нового луча добавляется очень мальенький вектор luch чтобы при проверке не пересечь сам себя

Ray shadowRay = new Ray (poffset, luch); // создание луча проверки на затененность

if (shadowRay.trace(objects)) // в случае пеоесечения какого либо обьекта

continue; // переходим к следующему источнику освещения

float lambert = WorkVector.dot (n, luch); // нахождение коэффициента освещенности в зависимости от нормали обьекта в данной точке и напраления источника света

if (lambert > 0) {

if (kRasseivania > 0) {

float diffuse = kRasseivania*lambert;

r += diffuse*ir*light.lightred;

g += diffuse*ig*light.lightgreen;

b += diffuse*ib*light.lightblue;

}

if (kOtragenia > 0) {

lambert *= 2;

float spec = v.dot (lambert*n.x – luch.x, lambert*n.y – luch.y, lambert*n.z – luch.z);

if (spec > 0) {

spec = kOtragenia*((float) Math.pow((double) spec, (double) ns));

r += spec*light.lightred;

g += spec*light.lightgreen;

b += spec*light.lightblue;

}

}

}

}

// ОТРАЖЕНИЕ

if (kr > 0) { // если коэффициент отражения больше нуля, то обьект может отражать

float t = v.dot(n); // получение результата скалярного произведения вектора направленного к началу источника луча и нормали поверхности в данной точке

if (t > 0) {

t *= 2;

К-во Просмотров: 312
Бесплатно скачать Курсовая работа: Отрисовка сцены "Отражающиеся дорожки" алгоритмом обратной трассировки лучей