procedure
arrow(nachalo,konec:tpoint);
var
B, deltaX, deltaY:
Extended
;
begin
Image1
.
Canvas
.
PenPos := nachalo;
Image1
.
Canvas
.
LineTo(konec
.
x, konec
.
y);
if
nachalo
.
x <> konec
.
x
then
begin
if
(nachalo
.
X > konec
.
X)
then
B := DegToRad(
135
) - ArcTan((nachalo
.
Y - konec
.
Y) / (nachalo
.
X - konec
.
X))
else
B := DegToRad(
45
) - ArcTan((nachalo
.
Y - konec
.
Y) / (nachalo
.
X - konec
.
X));
deltaX :=
10
* Cos(B);
deltaY :=
10
* Sin(B);
if
(nachalo
.
X > konec
.
X)
then
begin
Image1
.
Canvas
.
PenPos := Point(konec
.
X, konec
.
Y);
Image1
.
Canvas
.
LineTo(konec
.
X - Trunc(deltaX), konec
.
Y + Trunc(deltaY));
Image1
.
Canvas
.
PenPos := Point(konec
.
X, konec
.
Y);
Image1
.
Canvas
.
LineTo(konec
.
X + Trunc(deltaY), konec
.
Y + Trunc(deltaX));
end
else
begin
Image1
.
Canvas
.
moveto(konec
.
X, konec
.
Y);
Image1
.
Canvas
.
LineTo(konec
.
X - Trunc(deltaX), konec
.
Y + Trunc(deltaY));
Image1
.
Canvas
.
PenPos := Point(konec
.
X, konec
.
Y);
Image1
.
Canvas
.
LineTo(konec
.
X - Trunc(deltaY), konec
.
Y - Trunc(deltaX));
end
;
end
;