예제 #1
0
        public void RasterMapperConstructorTest()
        {
            RasterMapper mapper = new RasterMapper(RasterMapMode.ValueIsArea, MatrixFactory.CreateIdentity(4));

            Assert.AreEqual(RasterMapMode.ValueIsArea, mapper.Mode);
            Assert.AreEqual(MatrixFactory.CreateIdentity(4), mapper.RasterTransformation);
            Assert.AreEqual(MatrixFactory.CreateIdentity(4), mapper.GeometryTransformation);
            Assert.AreEqual(1, mapper.ColumnSize);
            Assert.AreEqual(1, mapper.RowSize);
            Assert.AreEqual(new CoordinateVector(1, 0), mapper.ColumnVector);
            Assert.AreEqual(new CoordinateVector(0, 1), mapper.RowVector);
            Assert.AreEqual(new CoordinateVector(1, 1, 1), mapper.Scale);
            Assert.AreEqual(Coordinate.Empty, mapper.Translation);

            // exceptions

            Assert.Throws <ArgumentNullException>(() => new RasterMapper(RasterMapMode.ValueIsArea, null));
            Assert.Throws <ArgumentException>(() => new RasterMapper(RasterMapMode.ValueIsArea, new Matrix(1, 4)));
            Assert.Throws <ArgumentException>(() => new RasterMapper(RasterMapMode.ValueIsArea, new Matrix(4, 1)));
            Assert.Throws <ArgumentException>(() => new RasterMapper(RasterMapMode.ValueIsArea, new Matrix(4, 4, Double.NaN)));
            Assert.Throws <ArgumentException>(() => new RasterMapper(RasterMapMode.ValueIsArea, new Matrix(4, 4)));
            Assert.Throws <ArgumentException>(() =>
            {
                Matrix matrix = new Matrix(4, 4);
                matrix[3, 0]  = matrix[3, 1] = matrix[3, 2] = matrix[3, 3] = 1;
                new RasterMapper(RasterMapMode.ValueIsArea, matrix);
            });
            Assert.Throws <NotSupportedException>(() => new RasterMapper(RasterMapMode.ValueIsArea, MatrixFactory.CreateDiagonal(0, 0, 0, 1)));
        }
예제 #2
0
        public void RasterMapperFromMapperTest()
        {
            // matrix from identity

            RasterMapper sourceMapper = new RasterMapper(RasterMapMode.ValueIsArea, MatrixFactory.CreateIdentity(4));

            RasterMapper mapper = RasterMapper.FromMapper(sourceMapper, MatrixFactory.CreateIdentity(4));

            Assert.AreEqual(RasterMapMode.ValueIsArea, mapper.Mode);
            Assert.AreEqual(MatrixFactory.CreateIdentity(4), mapper.GeometryTransformation);


            // coordinate and vector from identity

            mapper = RasterMapper.FromMapper(sourceMapper, new Coordinate(300, 1000, 0), new CoordinateVector(10, 3));

            Assert.AreEqual(RasterMapMode.ValueIsArea, mapper.Mode);
            Assert.AreEqual(new CoordinateVector(10, 0), mapper.ColumnVector);
            Assert.AreEqual(new CoordinateVector(0, 3), mapper.RowVector);
            Assert.AreEqual(new Coordinate(300, 1000), mapper.Translation);


            // all values from identity

            mapper = RasterMapper.FromMapper(sourceMapper, 300, 1000, 0, 10, 3, 0);

            Assert.AreEqual(RasterMapMode.ValueIsArea, mapper.Mode);
            Assert.AreEqual(new CoordinateVector(10, 0), mapper.ColumnVector);
            Assert.AreEqual(new CoordinateVector(0, 3), mapper.RowVector);
            Assert.AreEqual(new Coordinate(300, 1000), mapper.Translation);


            // exceptions

            Assert.Throws <ArgumentNullException>(() => RasterMapper.FromMapper(mapper, null));
            Assert.Throws <ArgumentException>(() => RasterMapper.FromMapper(mapper, new Matrix(1, 4)));
            Assert.Throws <ArgumentException>(() => RasterMapper.FromMapper(mapper, new Matrix(4, 1)));
            Assert.Throws <ArgumentException>(() => RasterMapper.FromMapper(mapper, new Matrix(4, 4, Double.NaN)));
            Assert.Throws <ArgumentException>(() => RasterMapper.FromMapper(mapper, new Matrix(4, 4)));
            Assert.Throws <ArgumentException>(() =>
            {
                Matrix matrix = new Matrix(4, 4);
                matrix[3, 0]  = matrix[3, 1] = matrix[3, 2] = matrix[3, 3] = 1;
                RasterMapper.FromMapper(mapper, matrix);
            });
            Assert.Throws <NotSupportedException>(() => RasterMapper.FromMapper(mapper, MatrixFactory.CreateDiagonal(0, 0, 0, 1)));
            Assert.Throws <ArgumentException>(() => RasterMapper.FromMapper(mapper, Coordinate.Undefined, new CoordinateVector(0, 1, 0)));
            Assert.Throws <ArgumentException>(() => RasterMapper.FromMapper(mapper, Coordinate.Empty, new CoordinateVector(Double.NaN, Double.NaN, Double.NaN)));
            Assert.Throws <ArgumentException>(() => RasterMapper.FromMapper(mapper, Coordinate.Empty, new CoordinateVector(0, 1, 0)));
            Assert.Throws <ArgumentException>(() => RasterMapper.FromMapper(mapper, Coordinate.Empty, new CoordinateVector(1, 0, 0)));
            Assert.Throws <ArgumentException>(() => RasterMapper.FromMapper(mapper, Double.NaN, 0, 0, 1, 0, 0));
            Assert.Throws <ArgumentException>(() => RasterMapper.FromMapper(mapper, 0, Double.NaN, 0, 1, 0, 0));
            Assert.Throws <ArgumentException>(() => RasterMapper.FromMapper(mapper, 0, 0, Double.NaN, 1, 0, 0));
            Assert.Throws <ArgumentException>(() => RasterMapper.FromMapper(mapper, 0, 0, 0, 1, 0, 0));
            Assert.Throws <ArgumentException>(() => RasterMapper.FromMapper(mapper, 0, 0, 0, 0, 1, 0));
            Assert.Throws <ArgumentException>(() => RasterMapper.FromMapper(mapper, 0, 0, 0, Double.NaN, 1, 0));
            Assert.Throws <ArgumentException>(() => RasterMapper.FromMapper(mapper, 0, 0, 0, 1, Double.NaN, 0));
            Assert.Throws <ArgumentException>(() => RasterMapper.FromMapper(mapper, 0, 0, 0, 1, 1, Double.NaN));
        }
예제 #3
0
        public void RasterMapperFromTransformationTest()
        {
            // matrix

            RasterMapper mapper = RasterMapper.FromTransformation(RasterMapMode.ValueIsArea, MatrixFactory.CreateIdentity(4));

            Assert.AreEqual(RasterMapMode.ValueIsArea, mapper.Mode);
            Assert.AreEqual(MatrixFactory.CreateIdentity(4), mapper.GeometryTransformation);


            // coordinate and vector

            mapper = RasterMapper.FromTransformation(RasterMapMode.ValueIsArea, new Coordinate(300, 1000, 0), new CoordinateVector(10, 3));

            Assert.AreEqual(new Coordinate(300, 1000), mapper.Translation);
            Assert.AreEqual(RasterMapMode.ValueIsArea, mapper.Mode);
            Assert.AreEqual(10, mapper.ColumnSize);
            Assert.AreEqual(3, mapper.RowSize);
            Assert.AreEqual(new CoordinateVector(10, 0), mapper.ColumnVector);
            Assert.AreEqual(new CoordinateVector(0, 3), mapper.RowVector);


            // all values

            mapper = RasterMapper.FromTransformation(RasterMapMode.ValueIsArea, 300, 1000, 0, 10, 3, 0);

            Assert.AreEqual(new Coordinate(300, 1000), mapper.Translation);
            Assert.AreEqual(RasterMapMode.ValueIsArea, mapper.Mode);
            Assert.AreEqual(10, mapper.ColumnSize);
            Assert.AreEqual(3, mapper.RowSize);
            Assert.AreEqual(new CoordinateVector(10, 0), mapper.ColumnVector);
            Assert.AreEqual(new CoordinateVector(0, 3), mapper.RowVector);


            // exceptions

            Assert.Throws <ArgumentException>(() => RasterMapper.FromTransformation(RasterMapMode.ValueIsArea, Coordinate.Undefined, new CoordinateVector(0, 1, 0)));
            Assert.Throws <ArgumentException>(() => RasterMapper.FromTransformation(RasterMapMode.ValueIsArea, Coordinate.Empty, new CoordinateVector(Double.NaN, Double.NaN, Double.NaN)));
            Assert.Throws <ArgumentException>(() => RasterMapper.FromTransformation(RasterMapMode.ValueIsArea, Coordinate.Empty, new CoordinateVector(0, 1, 0)));
            Assert.Throws <ArgumentException>(() => RasterMapper.FromTransformation(RasterMapMode.ValueIsArea, Coordinate.Empty, new CoordinateVector(1, 0, 0)));
            Assert.Throws <ArgumentException>(() => RasterMapper.FromTransformation(RasterMapMode.ValueIsArea, Double.NaN, 0, 0, 1, 0, 0));
            Assert.Throws <ArgumentException>(() => RasterMapper.FromTransformation(RasterMapMode.ValueIsArea, 0, Double.NaN, 0, 1, 0, 0));
            Assert.Throws <ArgumentException>(() => RasterMapper.FromTransformation(RasterMapMode.ValueIsArea, 0, 0, Double.NaN, 1, 0, 0));
            Assert.Throws <ArgumentException>(() => RasterMapper.FromTransformation(RasterMapMode.ValueIsArea, 0, 0, 0, 1, 0, 0));
            Assert.Throws <ArgumentException>(() => RasterMapper.FromTransformation(RasterMapMode.ValueIsArea, 0, 0, 0, 0, 1, 0));
            Assert.Throws <ArgumentException>(() => RasterMapper.FromTransformation(RasterMapMode.ValueIsArea, 0, 0, 0, Double.NaN, 1, 0));
            Assert.Throws <ArgumentException>(() => RasterMapper.FromTransformation(RasterMapMode.ValueIsArea, 0, 0, 0, 1, Double.NaN, 0));
            Assert.Throws <ArgumentException>(() => RasterMapper.FromTransformation(RasterMapMode.ValueIsArea, 0, 0, 0, 1, 1, Double.NaN));
        }
예제 #4
0
        public void RasterMapperGetHashCodeTest()
        {
            RasterMapper mapper1 = new RasterMapper(RasterMapMode.ValueIsArea, MatrixFactory.CreateIdentity(4));
            RasterMapper mapper2 = new RasterMapper(RasterMapMode.ValueIsArea, MatrixFactory.CreateIdentity(4));

            Assert.AreEqual(mapper1.GetHashCode(), mapper2.GetHashCode());

            mapper2 = new RasterMapper(RasterMapMode.ValueIsCoordinate, MatrixFactory.CreateIdentity(4));

            Assert.AreNotEqual(mapper1.GetHashCode(), mapper2.GetHashCode());

            mapper2 = RasterMapper.FromTransformation(RasterMapMode.ValueIsArea, new Coordinate(300, 1000, 0), new CoordinateVector(10, 3));

            Assert.AreNotEqual(mapper1.GetHashCode(), mapper2.GetHashCode());
        }
예제 #5
0
        public void RasterMapperEqualsTest()
        {
            RasterMapper mapper1 = new RasterMapper(RasterMapMode.ValueIsArea, MatrixFactory.CreateIdentity(4));
            RasterMapper mapper2 = new RasterMapper(RasterMapMode.ValueIsArea, MatrixFactory.CreateIdentity(4));

            Assert.IsTrue(mapper1.Equals(mapper1));
            Assert.IsFalse(mapper1.Equals(null));
            Assert.IsTrue(mapper1.Equals(mapper2));
            Assert.IsTrue(mapper1.Equals((Object)mapper1));
            Assert.IsFalse(mapper1.Equals((Object)null));
            Assert.IsTrue(mapper1.Equals((Object)mapper2));

            mapper2 = new RasterMapper(RasterMapMode.ValueIsCoordinate, MatrixFactory.CreateIdentity(4));

            Assert.IsFalse(mapper1.Equals(mapper2));
            Assert.IsFalse(mapper1.Equals((Object)mapper2));

            mapper2 = RasterMapper.FromTransformation(RasterMapMode.ValueIsArea, new Coordinate(300, 1000, 0), new CoordinateVector(10, 3));

            Assert.IsFalse(mapper1.Equals(mapper2));
            Assert.IsFalse(mapper1.Equals((Object)mapper2));
        }
예제 #6
0
        public void MatrixComputationsEigenvaluesTest()
        {
            // first matrix
            Matrix matrix = new Matrix(new[, ] {
                { 5, 4, 1.3 }, { 4, 8.7, 2 }, { 1.3, 2, 0 }
            });

            Double[] expected = new Double[3] {
                11.7417, 2.44301, -0.484678
            };

            Double[] result = MatrixComputations.Eigenvalues(matrix);

            Array.Sort(expected);
            Array.Sort(result);

            result.Length.ShouldBe(expected.Length);
            for (Int32 index = 0; index < result.Length; index++)
            {
                result[index].ShouldBe(expected[index], 0.001);
            }

            // second matrix
            matrix = new Matrix(new[, ] {
                { 5, 8, 7.6, 2 }, { 8, 42, 0, 1 }, { 7.6, 0, 3, 5 }, { 2, 1, 5, 22.4 }
            });
            expected = new Double[4] {
                43.8386, 24.094, 8.97766, -4.51021
            };

            result = MatrixComputations.Eigenvalues(matrix);

            Array.Sort(expected);
            Array.Sort(result);

            result.Length.ShouldBe(expected.Length);
            for (Int32 index = 0; index < result.Length; index++)
            {
                result[index].ShouldBe(expected[index], 0.001);
            }

            // identity matrix
            matrix   = MatrixFactory.CreateIdentity(4);
            expected = new Double[4] {
                1, 1, 1, 1
            };

            result = MatrixComputations.Eigenvalues(matrix);

            Array.Sort(expected);
            Array.Sort(result);

            result.Length.ShouldBe(expected.Length);
            for (Int32 index = 0; index < result.Length; index++)
            {
                result[index].ShouldBe(expected[index], 0.001);
            }

            // exceptions
            Should.Throw <ArgumentNullException>(() => MatrixComputations.Eigenvalues(null));
        }