40 lines
859 B
ObjectPascal
40 lines
859 B
ObjectPascal
unit Ufonctions;
|
|
|
|
//uses
|
|
|
|
interface
|
|
|
|
//function distance (ax,ay,bx,by,cx,cy : integer):real;
|
|
function distance (ax,ay,bx,by : double):double;
|
|
function entre(v,l1,l2:double):boolean;
|
|
function dist_proj_ortho(ax,ay,bx,by,mx,my : double):double;
|
|
|
|
|
|
implementation
|
|
|
|
|
|
function distance (ax,ay,bx,by : double):double;
|
|
begin
|
|
// result:=sqrt((cx-ax)*(cx-ax)+(cy-ay)*(cy-ay))+sqrt((cx-bx)*(cx-bx)+(cy-by)*(cy-by))-sqrt((bx-ax)*(bx-ax) + (by-ay)*(by-ay));
|
|
result:=sqrt(sqr(bx-ax) + sqr(by-ay));
|
|
end;
|
|
|
|
function entre(v,l1,l2:double):boolean;
|
|
begin
|
|
result:=(l1<=v)and(v<=l2) or (l2<=v)and(v<=l1);
|
|
end;
|
|
|
|
|
|
function dist_proj_ortho(ax,ay,bx,by,mx,my : double):double;
|
|
begin
|
|
if ax=bx then result:=abs(mx-ax);
|
|
if ay=by then result:=abs(my-ay);
|
|
if (ax<>bx) and (ay<>by) then
|
|
result:=abs(((by-ay)/(bx-ax))*(mx-ax)+ay-my)/sqrt(1+sqr((by-ay)/(bx-ax)));
|
|
|
|
|
|
end;
|
|
|
|
|
|
end.
|