FUNCTION Distance_LP(Line1:TLine; bodA:TPoint): Real;
IMPLEMENTATION
{ Funkcia vypocita vzdialenost bodu od priamky. }
{ Pred vypoctom testuje ci bod, alebo priamka existuju. }
{ V debug rezime vypisuje pripadne chyby ktore nastanu. }
FUNCTION Distance_LP(Line1:TLine; bodA:TPoint): Real;
var err : boolean;
mez, sq : real; { medzivysledok }
begin
{ Najprv dame default ktory tam zostane v pripade neuspechu }
Distance_LP := -1.0;
err := false;
{ bod ktory chcem pouzit nieje definovany }
if( bodA.bYnit = false )then begin
Error( 1, 'Bod pre urcenie vzdialenosti bodu od priamky neexistuje',
'Distance_LP', '' );
err := true;
end;
{ line ktoru chcem pouzit nieje definovana }
if( Line1.bYnit = false )then begin
Error( 1, 'Priamka pre urcenie vzdialenosti bodu od priamky neexistuje',
'Distance_LP', '' );
err := true;
end;
{ samotny vypocet, len ak existuju bod a priamka }
if (err = false )then begin
mez := Line1.a * bodA.ox + Line1.b * bodA.oy + Line1.c;
sq := Sqr(Line1.a) + Sqr(Line1.b);
{ este kontrola delenia nulou - teoreticky nemoze nastat lebo uz boli kontroly }
if( sq=0 )then
Error( 1, 'Vyskytla sa chyba delenia nulou pri pocitani vzdialenosti bodu od priamky',
'Distance_LP', '' )
else
Distance_LP := Abs( mez ) / Sqrt( sq );
end;