public void TestDistancePointLinePerpendicular() { Assert.AreEqual(0.5, DistanceComputer.PointToLinePerpendicular( new Coordinate(0.5, 0.5), new Coordinate(0, 0), new Coordinate(1, 0)), 0.000001); Assert.AreEqual(0.5, DistanceComputer.PointToLinePerpendicular( new Coordinate(3.5, 0.5), new Coordinate(0, 0), new Coordinate(1, 0)), 0.000001); Assert.AreEqual(0.707106, DistanceComputer.PointToLinePerpendicular( new Coordinate(1, 0), new Coordinate(0, 0), new Coordinate(1, 1)), 0.000001); }
private void PrintStats(string tag, Coordinate intPt, Coordinate p1, Coordinate p2, Coordinate q1, Coordinate q2) { double distP = DistanceComputer.PointToLinePerpendicular(intPt, p1, p2); double distQ = DistanceComputer.PointToLinePerpendicular(intPt, q1, q2); AddStat(tag, distP); AddStat(tag, distQ); if (Verbose) { Console.WriteLine(tag + " : " + WKTWriter.ToPoint(intPt) + " -- Dist P = " + distP + " Dist Q = " + distQ); } }
private static Coordinate IntersectionDDFilter(Coordinate p1, Coordinate p2, Coordinate q1, Coordinate q2) { // Compute using DP math var intPt = IntersectionBasic(p1, p2, q1, q2); if (intPt == null) { return(null); } if (DistanceComputer.PointToLinePerpendicular(intPt, p1, p2) > FILTER_TOL) { return(null); } if (DistanceComputer.PointToLinePerpendicular(intPt, q1, q2) > FILTER_TOL) { return(null); } return(intPt); }
/// <summary> /// Computes the perpendicular distance between the (infinite) line defined /// by this line segment and a point. /// </summary> /// <param name="p"></param> /// <returns></returns> public double DistancePerpendicular(Coordinate p) { return(DistanceComputer.PointToLinePerpendicular(p, _p0, _p1)); }