Exemplo n.º 1
0
        public void TestAreaLightIntensityFunction()
        {
            var w      = World.Default;
            var corner = new Point(-0.5, -0.5, -5);
            var v1     = Vector.VectorX;
            var v2     = Vector.VectorY;
            var light  = new AreaLight(corner, v1, 2, v2, 2, Color.White);

            light.JitterBy = Sequence.Generate(0.5, 0.5, 0.5);

            Assert.AreEqual(light.IntensityAt(new Point(0, 0, 2), w), 0.0, epsilon);
            Assert.AreEqual(light.IntensityAt(new Point(1, -1, 2), w), 0.25, epsilon);
            Assert.AreEqual(light.IntensityAt(new Point(1.5, 0, 2), w), 0.5, epsilon);
            Assert.AreEqual(light.IntensityAt(new Point(1.25, 1.25, 3), w), 0.75, epsilon);
            Assert.AreEqual(light.IntensityAt(new Point(0, 0, -2), w), 1.0, epsilon);
        }
Exemplo n.º 2
0
        public void AreaLight_ShouldWorkWithJitteredSamples(Point point, double result)
        {
            var w = new World();

            w.CreateDefaultWorld();
            var corner = new Point(-0.5, -0.5, -5);
            var v1     = new Vector(1, 0, 0);
            var v2     = new Vector(0, 1, 0);
            var light  = new AreaLight(corner, v1, 2, v2, 2, Color.White);

            light.JitterBy = new Sequence(new List <double> {
                0.7, 0.3, 0.9, 0.1, 0.5
            });
            var pt        = point;
            var intensity = light.IntensityAt(pt, w);

            Assert.Equal(result, intensity, 2);
        }