public void TestAreaLightFindingSinglePoint() { var corner = Point.Zero; var v1 = new Vector(2, 0, 0); var v2 = Vector.VectorZ; var light = new AreaLight(corner, v1, 4, v2, 2, Color.White); light.JitterBy = Sequence.Generate(0.5, 0.5, 0.5); Point pt; pt = light.PointOnLight(0, 0); Assert.AreEqual(pt, new Point(0.25, 0, 0.25)); pt = light.PointOnLight(1, 0); Assert.AreEqual(pt, new Point(0.75, 0, 0.25)); pt = light.PointOnLight(0, 1); Assert.AreEqual(pt, new Point(0.25, 0, 0.75)); pt = light.PointOnLight(2, 0); Assert.AreEqual(pt, new Point(1.25, 0, 0.25)); pt = light.PointOnLight(3, 1); Assert.AreEqual(pt, new Point(1.75, 0, 0.75)); }
public void FindingSinglePointOnAnAreaLight_ShouldWork(double u, double v, Point result) { var corner = new Point(0, 0, 0); var v1 = new Vector(2, 0, 0); var v2 = new Vector(0, 0, 1); var light = new AreaLight(corner, v1, 4, v2, 2, Color.White); light.JitterBy = new Sequence(new List <double> { 0.5 }); var pt = light.PointOnLight(u, v); Assert.Equal(result, pt, PointComparer); }