public void CanFailToInsersectWithRayFacingAwayFromSphere() { // Arrange var sphere = new Sphere() { Center = new Vector(0, 0, 0), Radius = 1 }; var ray = new Ray() { Start = new Vector(0, 0, -2), Direction = new Vector(0, 0, -1) }; // Act var isect = sphere.Intersect(ray); // Assert Assert.IsNull(isect); }
public void CanCalculateNormalToSphere() { // Arrange var sphere = new Sphere() { Center = new Vector(0, 0, 0), Radius = 1 }; var position = new Vector(1,0,0); // Act var normal = sphere.Normal(position); // Assert Assert.NotNull(normal); Assert.IsTrue(normal.Equals(new Vector(1,0,0))); }
public void CanIntersectEdgeOfSphere() { // Arrange var sphere = new Sphere() { Center = new Vector(0, 0, 0), Radius = 1 }; var ray = new Ray() { Start = new Vector(1, 0, -2), Direction = new Vector(0, 0, 1) }; // Act var isect = sphere.Intersect(ray); // Assert Assert.NotNull(isect); Assert.AreEqual(2, isect.Distance); Assert.AreEqual(sphere, isect.Element); }