Mega Code Archive

 
Categories / Delphi / Graphic
 

Perpendicular distance from Point to Segment in 2D

Title: Perpendicular distance from Point to Segment in 2D? function PntToSegmentDistance(Px, Py, x1, y1, x2, y2: Double): Double; var Ratio: Double; Dx: Double; Dy: Double; begin if IsEqual(x1, x2) and IsEqual(y1, y2) then begin Result := Distance(Px, Py, x1, y1); end else begin Dx := x2 - x1; Dy := y2 - y1; Ratio := ((Px - x1) * Dx + (Py - y1) * Dy) / (Dx * Dx + Dy * Dy); if Ratio then Result := Distance(Px, Py, x1, y1) else if Ratio 1 then Result := Distance(Px, Py, x2, y2) else Result := Distance(Px, Py, (1 - Ratio) * x1 + Ratio * x2, (1 - Ratio) * y1 + Ratio * y2); end; end; (* End PntToSegmentDistance *) Note: Distance is simple pythagoras distance routine // calcule la distance entre 1 point et 1 droite (bidimensionnel)