Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > IT форум > Помощь студентам
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 13.02.2012, 00:38   #1
MaDDi
 
Регистрация: 13.02.2012
Сообщений: 6
По умолчанию по трём координатам вершин прямоугольника найти координаты четвёртой вершины (Delphi)

Даны три точки с координатами (x1 , y1), (x2 , y2 ) , (x3 , y3 ) которые являются вершинами некоторого прямоугольника со сторонами, параллельными осям координат. Найти координаты четвертой точки. (Delphi)
MaDDi вне форума Ответить с цитированием
Старый 13.02.2012, 08:18   #2
Serge_Bliznykov
Старожил
 
Регистрация: 09.01.2008
Сообщений: 26,229
По умолчанию

ну и что не получается?
вариантов решения может быть несколько.
Например.
Из 3-х заданных вершин две (гарантировано!) - принадлежат диагонально противоположным вершинам. С помощью сравнения координат найдите эти две вершины, всё. дальше простейшая арифметика...
Serge_Bliznykov вне форума Ответить с цитированием
Старый 13.02.2012, 08:40   #3
DiemonStar
Старожил
 
Регистрация: 08.02.2012
Сообщений: 2,173
По умолчанию

Цитата:
которые являются вершинами некоторого прямоугольника со сторонами, параллельными осям координат
если прямоугольник расположен параллельно осям координат, то координаты его точек будут следующие:
(x1,y1), (x1,y2), (x2,y1) и (x2,y2)

как я понял задание, то вам просто нужно вычислить, какая из 4-х точек отсутствует и найти её координаты.

Код:
if X1 = X2 then
  X4 = X3
else
  if X1 = X3 then
    X4 = X2
  else
    if X2 = X3 then
      X4 = X1
    else
      showmessage('Это не прямоугольник');
координата Y4 вычисляется аналогично.
Правильно поставленная задача - три четверти решения.

Последний раз редактировалось DiemonStar; 13.02.2012 в 08:49.
DiemonStar вне форума Ответить с цитированием
Старый 13.02.2012, 15:17   #4
denisbrain
Форумчанин
 
Регистрация: 29.05.2011
Сообщений: 449
По умолчанию

Цитата:
Сообщение от DiemonStar Посмотреть сообщение
если прямоугольник расположен параллельно осям координат, то координаты его точек будут следующие:
(x1,y1), (x1,y2), (x2,y1) и (x2,y2)

как я понял задание, то вам просто нужно вычислить, какая из 4-х точек отсутствует и найти её координаты.

Код:
procedure myDrawRect(x1,y1,x2,y2,x3,y3,x4,y4:integer);
begin
  form1.Canvas.MoveTo(x1,y1);
  form1.Canvas.lineto(x2,y2);
  form1.Canvas.lineto(x3,y3);
  form1.Canvas.lineto(x4,y4);
  form1.Canvas.lineto(x1,y1);
end;
Function GetNt(n:integeR):myT;
begin
result.a:=1;result.b:=1;
  if n=0 then begin result.a:=1;result.b:=1; end;
  if n=1 then begin result.a:=1;result.b:=-1; end;
  if n=2 then begin result.a:=-1;result.b:=1; end;
  if n=3 then begin result.a:=-1;result.b:=-1; end;
end;
//                    R2
//   b(x2,y2)========== C( X3,y3)
//           * \       *
//           *  \      *
//           *   \     *
//     R1    *    \    *
//           *     \   *
//           *      \  *
//           *       \ *
//   a(x1,y1)*======== * D(x4,y4) - искомая точка
//
//

procedure TForm1.Button1Click(Sender: TObject);
var r5,x1,y1,x2,y2,x3,y3,x4,y4:integer;
    l,n,r4,r3,r1,r2:integer;
begin
   x1:=200;y1:=200;
   x2:=200;y2:=50;
   x3:=50;y3:=50;
   r1:=Round(SQRt((x1-x2)*(x1-x2)+(y1-y2)*(y1-y2)));
   r2:=Round(SQRt((x3-x2)*(x3-x2)+(y3-y2)*(y3-y2)));
   r3:=Round(SQrt(r2*r2+r1*r1));
   if (x1-x2)>0 then
   l:=Round(arctan((y1-y2)/(x1-x2))*180/pi) else l:=90;
   // находим угол наклона сторны A
   for n:=0 to 4 do begin
     x4:=x2+Round(cos((45+l)*pi/180)*r3)*GetNt(n).a;
     y4:=y2+Round(sin((45+l)*pi/180)*r3)*GetNt(n).b;
     r4:=Round(SQRt((x3-x4)*(x3-x4)+(y3-y4)*(y3-y4)));
     r5:=Round(SQRt((x4-x1)*(x4-x1)+(y4-y1)*(y4-y1)));
     if (r4=r1) and (r5=r2) then begin
       Showmessage(inttostr(x4)+'  '+inttostr(y4));
       break;
     end;
   end;
   myDrawRect(x1,y1,x2,y2,x3,y3,x4,y4);


end;
координата Y4 вычисляется аналогично.
попробуйте следующий код
Расчет 4-ой координаты прямоугольника стороны которого не параллельны осям
исходник Pascal Delphi
задания на pascal/delphi ICQ 368254335
Tel +79177425326 mail denis-naymov1985(at)mail.ru login skype denis.new.skype

Последний раз редактировалось denisbrain; 13.02.2012 в 15:20.
denisbrain вне форума Ответить с цитированием
Старый 13.02.2012, 15:57   #5
DiemonStar
Старожил
 
Регистрация: 08.02.2012
Сообщений: 2,173
По умолчанию

для непараллельного осям можно воспользоваться следующими правилами, верными для любого параллелограмма:

x1+x3 = x2+x4, где точки 1 и 3 - диагональные
и аналогично для y:
y1+y3 = y2+y4

т.е.
x4 = x1+x3-x2
y4 = y1+y3-y2
Правильно поставленная задача - три четверти решения.
DiemonStar вне форума Ответить с цитированием
Старый 13.02.2012, 16:03   #6
Serge_Bliznykov
Старожил
 
Регистрация: 09.01.2008
Сообщений: 26,229
По умолчанию

ребятки, остановитесь..
в условиях задачи сказано чётно и однозначно:
Цитата:
Даны три точки с координатами (x1 , y1), (x2 , y2 ) , (x3 , y3 ) которые являются вершинами некоторого прямоугольника со сторонами, параллельными осям координат.
Зачем решать задачу, которая выходит за рамки условия?!!
Serge_Bliznykov вне форума Ответить с цитированием
Старый 13.02.2012, 17:39   #7
DiemonStar
Старожил
 
Регистрация: 08.02.2012
Сообщений: 2,173
По умолчанию

Цитата:
Зачем решать задачу, которая выходит за рамки условия?!!
ну, хотя-бы потому, что мне захотелось... тем более, что последнее решение явно проще и эффективнее предложенного выше)
Правильно поставленная задача - три четверти решения.
DiemonStar вне форума Ответить с цитированием
Старый 14.02.2012, 22:11   #8
MaDDi
 
Регистрация: 13.02.2012
Сообщений: 6
По умолчанию

спасибо огромное :D
MaDDi вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Площадь фигуры по координатам вершин Maksss123 Фриланс 8 09.03.2010 21:30
Треугольник на плоскости задан координатами своих вершин.Найти координаты точки пересечения его медиан. Silver23 Помощь студентам 2 13.01.2010 15:59
Координаты вершины графа в списке Glarus Помощь студентам 0 15.12.2009 20:21
найти возможные координаты вершин квадрата(полное условие внутри).очень срочно.заранне благодарен. Juicy_G Помощь студентам 2 23.12.2008 18:19