Beispiel #1
0
        private Color shade(Intersection isect, Scene scene, double depth)
        {
            var d              = isect.ray.dir;
            var pos            = Vector.plus(Vector.times(isect.dist, d), isect.ray.start);
            var normal         = isect.thing.normal(pos);
            var reflectDir     = Vector.minus(d, Vector.times(2, Vector.times(Vector.dot(normal, d), normal)));
            var naturalColor   = Color.plus(Color.background, this.getNaturalColor(isect.thing, pos, normal, reflectDir, scene));
            var reflectedColor = (depth >= this.maxDepth) ? Color.grey : this.getReflectionColor(isect.thing, pos, normal, reflectDir, scene, depth);

            return(Color.plus(naturalColor, reflectedColor));
        }
Beispiel #2
0
 Vector getPoint(double x, double y, Camera camera)
 {
     return(Vector.norm(Vector.plus(camera.forward, Vector.plus(Vector.times(recenterX(x), camera.right), Vector.times(recenterY(y), camera.up)))));
 }