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

float t = radius*radius + v*v – dv.x*dv.x – dv.y*dv.y – dv.z*dv.z;

if (t < 0)

return false;

// проверка знака пересечения и того что оно самое близкое

t = v – ((float) Math.sqrt(t));

if ((t > ray.currentDistance) || (t < 0))

return false;

ray.currentDistance = t; // расстояниедообьектапересеченияприравниваетсякcurrentDistance

ray.object = this; // текущий обьект становится объектом пересечения с лучем

return true;

}

public Color Shade (Ray ray, Vector lights, Vector objects, Color bgnd) {

// направление луча увеличивается на расстояние до точки пересечения

float px = ray.initRay.x + ray.currentDistance*ray.finalRay.x;

float py = ray.initRay.y + ray.currentDistance*ray.finalRay.y;

float pz = ray.initRay.z + ray.currentDistance*ray.finalRay.z;

WorkVector p = new WorkVector (px, py, pz); // нахождениеточкипересечениялучаиобьекта

WorkVector v = new WorkVector (-ray.finalRay.x, – ray.finalRay.y, – ray.finalRay.z); // нахождениевектора– отрицательногонаправлениялуча

WorkVector n = new WorkVector((px – center.x), (py – center.y), (pz – center.z)); // находитсявектор, которомупринадлежитнормальвтекущейточкеповерхности

n.normalize(); // получаемнормаль

return surface. Shade (p, n, v, lights, objects, bgnd); // возвращяестяцветвданнойточке

}

}

Приложение 5

Листинг Surface.java

package objects;

import java.awt. Color;

import java.util. Vector;

/**

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