Курсовая работа: Отрисовка сцены "Отражающиеся дорожки" алгоритмом обратной трассировки лучей
WorkVector poffset = new WorkVector (p.add (reflect.mul(TINY)));
Ray reflectedRay = new Ray (poffset, reflect);
if (reflectedRay.trace(objects)) {
Color rcolor = reflectedRay. Shade (lights, objects, bgnd);
r += kr*rcolor.getRed();
g += kr*rcolor.getGreen();
b += kr*rcolor.getBlue();
} else {
r += kr*bgnd.getRed();
g += kr*bgnd.getGreen();
b += kr*bgnd.getBlue();
}
}
}
// ПРИЛОМЛЕНИЕ
if (kt > 0) {
WorkVector tr;
WorkVector incident = v.add(p);
float eta = (float) 0.7;
float c1 = incident.mul(-1).dot(n);
float c2;
c2 = 1 – eta*eta*(1-c1*c1);
if (c2 > 0.0) {
c2 = (float) (Math.sqrt(c2));
float maae = (eta*c1 – c2);
tr = incident.mul(eta).add (n.mul(maae));
tr.normalize();
WorkVector poffset = p.add (n.mul(-TINY));
Ray reflectedRay = new Ray (poffset, tr);