public void NormalPointOnZ() { var sphere = new Sphere(); var pt = Tuple3D.Point(0, 0, 1); var expected = Tuple3D.Vector(0, 0, 1); var actual = sphere.NormalAt(pt); Assert.That(actual, Is.EqualTo(expected)); }
public void NormalIsNormalizedVector() { var sphere = new Sphere(); var weirdVal = Math.Sqrt(3) / 3.0; var pt = Tuple3D.Point(weirdVal, weirdVal, weirdVal); var actual = sphere.NormalAt(pt); var actualNormalized = actual.Normalize(); Assert.That(actual, Is.EqualTo(actualNormalized)); }
public void NormalPointOnNonaxialPoint() { var sphere = new Sphere(); var weirdVal = Math.Sqrt(3) / 3.0; var pt = Tuple3D.Point(weirdVal, weirdVal, weirdVal); var expected = Tuple3D.Vector(weirdVal, weirdVal, weirdVal); var actual = sphere.NormalAt(pt); Assert.That(actual, Is.EqualTo(expected)); }
public void NormalOnTranslatedSphere() { var sphere = new Sphere { Transform = Transformation.Translation(0, 1, 0) }; var pt = Tuple3D.Point(0, 1.70711, -0.70711); var expected = Tuple3D.Vector(0, 0.70711, -0.70711); var actual = sphere.NormalAt(pt); Assert.That(actual, Is.EqualTo(expected)); }
public void NormalOnTransformedSphere() { var sphere = new Sphere { //Transform = Transformation.Scaling(1, 0.5, 1) * Transformation.RotationZ(Math.PI/5.0) Transform = Transformation.Scaling(1, 0.5, 1) .RotateZ(Math.PI / 5.0) }; var pt = Tuple3D.Point(0, Math.Sqrt(2) / 2.0, -Math.Sqrt(2) / 2.0); var expected = Tuple3D.Vector(0, 0.97014, -0.24254); var actual = sphere.NormalAt(pt); Assert.That(actual, Is.EqualTo(expected)); }