public void IntersectingRayWithEmptyGroup() { var g = new shape.Group(); var r = new Ray(pt.Point(0, 0, 0), pt.Vector(0, 0, 0)); var xs = g.Intersect(r); Assert.Empty(xs); }
public void IntersectingRayGrouTestChildrenIfBoxHit() { var child = new shape.TestShape(); var shape = new shape.Group(); shape.Add(child); var r = new Ray(pt.Point(0, 0, -5), pt.Vector(0, 0, 1)); _ = shape.Intersect(r); Assert.NotNull(child.SavedRay); }
public void IntersectingATransformedGroup() { var g = new shape.Group(transform.Scaling(2, 2, 2)); var s = new shape.Sphere(transform.Translation(5, 0, 0)); g.Add(s); var r = new Ray(pt.Point(10, 0, -10), pt.Vector(0, 0, 1)); var xs = g.Intersect(r); Assert.Equal(2, xs.Count()); }
public void IntersectingRayWithNonemptyGroup() { var g = new shape.Group(); var s1 = new shape.Sphere(); var s2 = new shape.Sphere(transform.Translation(0, 0, -3)); var s3 = new shape.Sphere(transform.Translation(5, 0, 0)); g.Add(s1); g.Add(s2); g.Add(s3); var r = new Ray(pt.Point(0, 0, -5), pt.Vector(0, 0, 1)); var xs = g.Intersect(r); Assert.Equal(4, xs.Count()); Assert.Equal(s2, xs[0].Object); Assert.Equal(s2, xs[1].Object); Assert.Equal(s1, xs[2].Object); Assert.Equal(s1, xs[3].Object); }