Вступление
Людей, что знают геометрию - много, просто уж на этот вопрос отвечать всем влом... тем более что это задачка из школы класса эдак 7-8,
достаточно знать, что такое синус и косинус...
Решение
Немного непонятно, как именно тебе надо достраивать до прямоугольника, но ладно, предлагаю такой вариант:
Прямоугольник - даны координаты двух его соседних вершин
( X1,Y1 и X2,Y2 ) , пусть расстояние между ними A, тогда длина другой стороны пусть будет B.
=> коорд. других вершин:
Код:
var X1,Y1,X2,Y2,X3,Y3,X4,Y4:integer;
B:integer;
Sn,Cs:real;
begin
// вводишь значения X1,Y1,X2,Y2 - вершины и B - длина другой стороны
Sn:=(Y1-Y2)/Sqrt( Sqr(X1-X2) + Sqr(Y1-Y2) );
Cs:=(X2-X1)/Sqrt( Sqr(X1-X2) + Sqr(Y1-Y2) );
X3:=Round(X2 - B*Sn);
Y3:=Round(Y2 - B*Cs);
X4:=Round(X1 - B*Sn);
Y4:=Round(Y1 - B*Cs);
Image1.Canvas.Polygon([Point(X1,Y1),Point(X2,Y2),
Point(X3,Y3),Point(X4,Y4)] );
end;
Будет достраиваться слева по направлению от первой ко второй точке,
если надо иначе то в расчёте X3,Y3,X4,Y4 поставь вместо минусов плюсы