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)); }
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)); }