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); }
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); }