public void RayMissesCSGObject() { var c = new shape.CSG(shape.Operation.Union, new shape.Sphere(), new shape.Cube()); var r = new Ray(pt.Point(0, 2, -5), pt.Vector(0, 0, 1)); var xs = c.Intersect(r); Assert.Empty(xs); }
public void RayHitsCSGObject() { var s1 = new shape.Sphere(); var s2 = new shape.Sphere(transform.Translation(0, 0, 0.5)); var c = new shape.CSG(shape.Operation.Union, s1, s2); var r = new Ray(pt.Point(0, 0, -5), pt.Vector(0, 0, 1)); var xs = c.Intersect(r); Assert.Equal(2, xs.Count()); Assert.Equal(4, xs[0].T); Assert.Equal(s1, xs[0].Object); Assert.Equal(6.5, xs[1].T); Assert.Equal(s2, xs[1].Object); }