Показать сообщение отдельно
  #5  
Старый 05.12.2007, 14:56
Аватар для Rokuell
Rokuell Rokuell вне форума
Активный
 
Регистрация: 27.12.2006
Адрес: Псков
Сообщения: 274
Версия Delphi: Delphi 7
Репутация: 497
Восклицание Матчасть

Вступление

Людей, что знают геометрию - много, просто уж на этот вопрос отвечать всем влом... тем более что это задачка из школы класса эдак 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 поставь вместо минусов плюсы
Ответить с цитированием