Ejemplo n.º 1
0
 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);
 }
Ejemplo n.º 2
0
        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);
        }
Ejemplo n.º 4
0
 /// <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));
 }