示例#1
0
        bool LeftFromLineOnP(int vertexIndex, Point lineStart, Point lineEnd)
        {
            Point p = P.Pnt(vertexIndex);

            if (upperBranchOnP)
            {
                return(Point.PointToTheLeftOfLineOrOnLine(lineEnd, p, lineStart));
            }
            return(Point.PointToTheRightOfLineOrOnLine(lineEnd, p, lineStart));
        }
示例#2
0
        static double TestPolygonDist(Polygon a, Polygon b)
        {
            // ReSharper restore UnusedMember.Local
            double ret = double.PositiveInfinity, u, v;

            for (int i = 0; i < a.Count; i++)
            {
                for (int j = 0; j < b.Count; j++)
                {
                    ret = Math.Min(ret, Point.MinDistBetweenLineSegments(a.Pnt(i), a.Pnt(i + 1), b.Pnt(j),
                                                                         b.Pnt(j + 1), out u, out v));
                }
            }

            return(ret);
        }
示例#3
0
        bool LeftFromLineOnQ(int vertexIndex, Point lineStart, Point lineEnd)
        {
            Point point = Q.Pnt(vertexIndex);

            if (lowerBranchOnQ)
            {
                return(Point.PointToTheLeftOfLineOrOnLine(lineEnd, point, lineStart));
            }
            return(Point.PointToTheRightOfLineOrOnLine(lineEnd, point, lineStart));
        }
 static void TestDist(Polygon a, Polygon b, double dist) {
     double u, v;
     for (int i = 0; i < a.Count; i++)
         for (int j = 0; j < b.Count; j++) {
             var d = LineSegment.MinDistBetweenLineSegments(a.Pnt(i), a.Pnt(i + 1), b.Pnt(j),
                                                                         b.Pnt(j + 1), out u, out v);
             Assert.IsTrue(d >= dist - 0.0000001);
         }
 }
        static double TestPolygonDistLocal(Polygon a,Polygon b) {
            double ret = double.PositiveInfinity,u,v;
            for(int i = 0;i < a.Count;i++)
                for(int j = 0;j < b.Count;j++)
                    ret = Math.Min(ret,LineSegment.MinDistBetweenLineSegments(a.Pnt(i),a.Pnt(i + 1),b.Pnt(j),
                                                                                b.Pnt(j + 1),out u,out v));

            return ret;
        }