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