public static double DistanceFromPointToSegment(Point P, Segment segment) { Point H = P.ProjectToLine(segment.BaseLine); if (segment.ContainsPoint(H)) { return(H.DistanceToPoint(P)); } return(Math.Min(segment.A.DistanceToPoint(P), segment.B.DistanceToPoint(P))); }