public float DistanceSquaredToLineSegment(Vec2 v, Vec2 w, out Vec2 closestPointOnLineSegment) { Vec2 vec2_1 = this; float num1 = v.DistanceSquared(w); if ((double)num1 == 0.0) { closestPointOnLineSegment = v; } else { float num2 = Vec2.DotProduct(vec2_1 - v, w - v) / num1; if ((double)num2 < 0.0) { closestPointOnLineSegment = v; } else if ((double)num2 > 1.0) { closestPointOnLineSegment = w; } else { Vec2 vec2_2 = v + (w - v) * num2; closestPointOnLineSegment = vec2_2; } } return(vec2_1.DistanceSquared(closestPointOnLineSegment)); }
public static float DistanceToLineSegmentSquared(Vec2 line1, Vec2 line2, Vec2 point) => point.DistanceSquared(MBMath.GetClosestPointInLineSegmentToPoint(point, line1, line2));