Ejemplo n.º 1
0
        public void Render_WithDefaultScene_ExpectCorrectCenterPixelColor()
        {
            //arrange
            var scene = Scene.Default;
            var viewTransformation = new ViewTransformation(new Point3D(0, 0, -5), new Point3D(0, 0, 0), new Vector3D(0, 1, 0));
            var camera             = new Camera(11, 11, Math.PI / 2, viewTransformation);

            //act
            var image = camera.Render(scene);

            //assert
            Assert.AreEqual(new Color(0.38066119308103435, 0.47582649135129296, 0.28549589481077575), image[5, 5]);
        }
        public void Constructor_WithInvertedTargetDirection_ExpectMatrixIsScaleMatrix()
        {
            //arrange
            var position = new Point3D(0, 0, 0);
            var target   = new Point3D(0, 0, 1);
            var up       = new Vector3D(0, 1, 0);

            //act
            var camera = new ViewTransformation(position, target, up);

            //assert
            Assert.AreEqual(Matrix.Scale(new Vector(-1, 1, -1)), camera.Matrix);
        }
        public void Constructor_WithNonOriginPosition_ExpectMatrixIsTranslationMatrix()
        {
            //arrange
            var position = new Point3D(0, 0, 8);
            var target   = new Point3D(0, 0, 0);
            var up       = new Vector3D(0, 1, 0);

            //act
            var camera = new ViewTransformation(position, target, up);

            //assert
            Assert.AreEqual(Matrix.Translation(new Vector(0, 0, -8)), camera.Matrix);
        }
        public void Constructor_WithDefaultInputs_ExpectMatrixIsIdentityMatrix()
        {
            //arrange
            var position = new Point3D(0, 0, 0);
            var target   = new Point3D(0, 0, -1);
            var up       = new Vector3D(0, 1, 0);

            //act
            var camera = new ViewTransformation(position, target, up);

            //assert
            Assert.AreEqual(Matrix.Identity(4), camera.Matrix);
        }
        public void Constructor_WithArbitraryInputs_ExpectCorrectMatrix()
        {
            //arrange
            var position = new Point3D(1, 3, 2);
            var target   = new Point3D(4, -2, 8);
            var up       = new Vector3D(1, 1, 0);

            //act
            var camera = new ViewTransformation(position, target, up);

            //assert
            var expected = new Matrix(new[]
            {
                new[] { -0.50709255283711, 0.50709255283711, 0.67612340378281321, -2.3664319132398464 },
                new[] { 0.76771593385968018, 0.60609152673132649, 0.12121830534626529, -2.8284271247461903 },
                new[] { -0.35856858280031811, 0.59761430466719678, -0.71713716560063623, 0.0 },
                new[] { 0.0, 0.0, 0.0, 1.0 }
            });

            Assert.AreEqual(expected, camera.Matrix);
        }