Курсовая работа: Отрисовка сцены "Отражающиеся дорожки" алгоритмом обратной трассировки лучей
* @author Алексей
*/
public class Surface {
public float ir, ig, ib; // цветобьекта
public float kRasseivania, kOtragenia, ns; // константыдляосвещенияобьекта
public float kt, kr; // коэффициентыматериала
private float TINY = 0.001f;
private float I255 = 0.00392156f;
private WorkVector luch;
public Surface (float rval, float gval, float bval, float d,
float s, float n, float r, float t) {
ir = rval; ig = gval; ib = bval; // задание цвета поверхности
kRasseivania = d; // рассеивающая составляющая поверхности
kOtragenia = s; // отражающая составляющая поверхности
ns = n;
kr = r*I255;
kt = t*I255;
}
public Color Shade (WorkVector p, WorkVector n, WorkVector v, Vector lights, Vector objects, Color bgnd) // возвращаетполученныйцветобьектавточке
// нормаль в точке пересечения (n)
// вектор направленный в точку из которой пришел лучь (v)
{
float r = 0; // обнуляем
float g = 0;
float b = 0;
for (int i = 0; i < lights.size(); i++) { // цикл, в котором расчитывается освещенность
Light light = (Light) lights.elementAt(i); // взятиетекущегоистчоникаосвещения
luch = new WorkVector (light.lightvec.sub(p)); // задаем вектор luch как вектор от источника освещения до точки обьекта
luch.normalize(); // нормализируем вектор luch чтобы получить вектор направления от источника освещения к точке обьекта