internal static double DistanceToLineSegment(this Point point, IList polyline, double delta) { double num1 = double.NaN; for (int index = 0; index < polyline.Count - 1; ++index) { Point point1 = (Point)polyline[index]; Point point2 = (Point)polyline[index + 1]; double num2 = PointExtensions.DistanceToLine(point, point1, point2); bool flag = Math.Abs(point1.X - point2.X) < 1E-06 ? PointExtensions.IsYBetween(point, point1, point2) : PointExtensions.IsXBetween(point, point1, point2); if (num2 < delta && flag || RectExtensions.AroundPoint(point1, point, delta)) { num1 = num2; break; } } return(num1); }
internal static double DistanceToPolyline(this Point point, IList polyline, ref int closestSegmentToPoint) { double num1 = double.MaxValue; closestSegmentToPoint = 0; for (int index = 0; index < polyline.Count - 1; ++index) { Point a = (Point)polyline[index]; Point b = (Point)polyline[index + 1]; double num2 = PointExtensions.DistanceToLine(point, a, b); if (num2 < num1) { num1 = num2; closestSegmentToPoint = index; } } return(num1); }
internal static double DistanceToSegmentSquared(this Point p, Point a, Point b) { if (a == b) { return(Utils.DistanceSquared(p, a)); } double num1 = b.X - a.X; double num2 = b.Y - a.Y; if ((p.X - a.X) * num1 + (p.Y - a.Y) * num2 < 0.0) { return(Utils.DistanceSquared(a, p)); } if ((b.X - p.X) * num1 + (b.Y - p.Y) * num2 < 0.0) { return(Utils.DistanceSquared(b, p)); } else { return(PointExtensions.DistanceToLineSquared(p, a, b)); } }
internal static double DistanceToLine(this Point p, Point a, Point b) { return(PointExtensions.Distance(p, Utils.ProjectPointOnLine(p, a, b))); }
internal static double DistanceToPolyline(this Point point, IList polyline) { int closestSegmentToPoint = 0; return(PointExtensions.DistanceToPolyline(point, polyline, ref closestSegmentToPoint)); }
/// <summary> /// Returns the distance of the point to the origin. /// /// </summary> /// <param name="point">The point.</param> /// <returns/> public static double Distance(this Point point) { return(PointExtensions.Distance(point, new Point(0.0, 0.0))); }
/// <summary> /// Distances to rectangle. /// </summary> /// <param name="point">The point.</param><param name="rect">The rectangle.</param> public static double Distance(this Point point, Rect rect) { Point endPoint = PointExtensions.DistancePoint(point, rect); return(PointExtensions.Distance(point, endPoint)); }
/// <summary> /// Distance to rectangle. /// </summary> /// <param name="point">The point.</param><param name="rect">The rectangle.</param> public static Point DistancePoint(this Point point, Rect rect) { return(new Point(PointExtensions.DistanceSelect(point.X, rect.Left, rect.Right), PointExtensions.DistanceSelect(point.Y, rect.Top, rect.Bottom))); }