Beispiel #1
0
        public void LineAlgorithmsCoincidesTest()
        {
            // coinciding lines
            Coordinate       firstCoordinate  = new Coordinate(1, 1);
            CoordinateVector firstVector      = new CoordinateVector(0, 2);
            Coordinate       secondCoordinate = new Coordinate(1, 1);
            CoordinateVector secondVector     = new CoordinateVector(0, 4);

            Assert.IsTrue(LineAlgorithms.Coincides(firstCoordinate, firstVector, secondCoordinate, secondVector));

            firstCoordinate  = new Coordinate(2, 5);
            firstVector      = new CoordinateVector(0, 1);
            secondCoordinate = new Coordinate(2, 4);
            secondVector     = new CoordinateVector(0, 4);
            Assert.IsTrue(LineAlgorithms.Coincides(firstCoordinate, firstVector, secondCoordinate, secondVector));

            firstCoordinate  = new Coordinate(15, 7);
            firstVector      = new CoordinateVector(9, 5);
            secondCoordinate = new Coordinate(15, 7);
            secondVector     = new CoordinateVector(9, 5);
            Assert.IsTrue(LineAlgorithms.Coincides(firstCoordinate, firstVector, secondCoordinate, secondVector));

            firstCoordinate  = new Coordinate(2, 4);
            firstVector      = new CoordinateVector(3, -1);
            secondCoordinate = new Coordinate(14, 0);
            secondVector     = new CoordinateVector(3, -1);
            Assert.IsTrue(LineAlgorithms.Coincides(firstCoordinate, firstVector, secondCoordinate, secondVector));


            // not coinciding lines
            firstCoordinate  = new Coordinate(1, 1);
            firstVector      = new CoordinateVector(0, 1);
            secondCoordinate = new Coordinate(1, 1);
            secondVector     = new CoordinateVector(1, 0);
            Assert.IsFalse(LineAlgorithms.Coincides(firstCoordinate, firstVector, secondCoordinate, secondVector));

            firstCoordinate  = new Coordinate(2, 5);
            firstVector      = new CoordinateVector(0, 1);
            secondCoordinate = new Coordinate(2, 4);
            secondVector     = new CoordinateVector(4, 0);
            Assert.IsFalse(LineAlgorithms.Coincides(firstCoordinate, firstVector, secondCoordinate, secondVector));
        }
Beispiel #2
0
        public void LineAlgorithmsIsParallelTest()
        {
            // parallel lines
            Coordinate firstLineStart  = new Coordinate(1, 1);
            Coordinate firstLineEnd    = new Coordinate(4, 1);
            Coordinate secondLineStart = new Coordinate(2, 2);
            Coordinate secondLineEnd   = new Coordinate(4, 2);

            Assert.IsTrue(LineAlgorithms.IsParallel(firstLineStart, firstLineEnd, secondLineStart, secondLineEnd));
            Assert.IsFalse(LineAlgorithms.Intersects(firstLineStart, firstLineEnd, secondLineStart, secondLineEnd));

            firstLineStart  = new Coordinate(1.2, 1.2);
            firstLineEnd    = new Coordinate(1.2, 7.2);
            secondLineStart = new Coordinate(2.2, 8.2);
            secondLineEnd   = new Coordinate(2.2, 15.2);
            Assert.IsTrue(LineAlgorithms.IsParallel(firstLineStart, firstLineEnd, secondLineStart, secondLineEnd));
            Assert.IsFalse(LineAlgorithms.Intersects(firstLineStart, firstLineEnd, secondLineStart, secondLineEnd));

            firstLineStart  = new Coordinate(1, 1);
            firstLineEnd    = new Coordinate(1, 7);
            secondLineStart = new Coordinate(1, 1);
            secondLineEnd   = new Coordinate(1, 7);
            Assert.IsTrue(LineAlgorithms.IsParallel(firstLineStart, firstLineEnd, secondLineStart, secondLineEnd));
            Assert.IsTrue(LineAlgorithms.Intersects(firstLineStart, firstLineEnd, secondLineStart, secondLineEnd));

            // non parallel lines
            firstLineStart  = new Coordinate(1, 1);
            firstLineEnd    = new Coordinate(1, 7);
            secondLineStart = new Coordinate(2, 1);
            secondLineEnd   = new Coordinate(2.2, 8);
            Assert.IsFalse(LineAlgorithms.IsParallel(firstLineStart, firstLineEnd, secondLineStart, secondLineEnd));

            firstLineStart  = new Coordinate(1, 1);
            firstLineEnd    = new Coordinate(1, 7);
            secondLineStart = new Coordinate(0, 2);
            secondLineEnd   = new Coordinate(10, 2);
            Assert.IsFalse(LineAlgorithms.IsParallel(firstLineStart, firstLineEnd, secondLineStart, secondLineEnd));

            // parallel infinite lines
            firstLineStart = new Coordinate(1, 1);
            CoordinateVector firstVector = new CoordinateVector(0, 1);

            secondLineStart = new Coordinate(2, 2);
            CoordinateVector secondVector = new CoordinateVector(0, 1);

            Assert.IsTrue(LineAlgorithms.IsParallel(firstLineStart, firstVector, secondLineStart, secondVector));

            firstLineStart  = new Coordinate(2, 5);
            firstVector     = new CoordinateVector(0, 1);
            secondLineStart = new Coordinate(2, 4);
            secondVector    = new CoordinateVector(0, 4);
            Assert.IsTrue(LineAlgorithms.Coincides(firstLineStart, firstVector, secondLineStart, secondVector));
            Assert.IsTrue(LineAlgorithms.IsParallel(firstLineStart, firstVector, secondLineStart, secondVector));

            firstLineStart  = new Coordinate(2, 4);
            firstVector     = new CoordinateVector(-3, 1);
            secondLineStart = new Coordinate(5, 3);
            secondVector    = new CoordinateVector(-3, 1);
            Assert.IsTrue(LineAlgorithms.IsParallel(firstLineStart, firstVector, secondLineStart, secondVector));

            // non parallel infinite lines
            firstLineStart  = new Coordinate(1, 1);
            firstVector     = new CoordinateVector(0, 1);
            secondLineStart = new Coordinate(1, 1);
            secondVector    = new CoordinateVector(1, 0);
            Assert.IsTrue(LineAlgorithms.Intersects(firstLineStart, firstVector, secondLineStart, secondVector));
            Assert.IsFalse(LineAlgorithms.IsParallel(firstLineStart, firstVector, secondLineStart, secondVector));

            firstLineStart  = new Coordinate(2, 5);
            firstVector     = new CoordinateVector(0, 1);
            secondLineStart = new Coordinate(2, 4);
            secondVector    = new CoordinateVector(4, 0);
            Assert.IsTrue(LineAlgorithms.Intersects(firstLineStart, firstVector, secondLineStart, secondVector));
            Assert.IsFalse(LineAlgorithms.IsParallel(firstLineStart, firstVector, secondLineStart, secondVector));
        }