示例#1
0
        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));
        }
示例#2
0
        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));
        }
示例#3
0
        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));
        }
示例#4
0
        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));
        }
示例#5
0
        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));
        }