Форум по Delphi программированию

Delphi Sources



Вернуться   Форум по Delphi программированию > Все о Delphi > [ "Начинающим" ]
Ник
Пароль
Регистрация <<         Правила форума         >> FAQ Пользователи Календарь Поиск Сообщения за сегодня Все разделы прочитаны

Ответ
 
Опции темы Поиск в этой теме Опции просмотра
  #1  
Старый 10.09.2011, 17:57
any65 any65 вне форума
Прохожий
 
Регистрация: 10.09.2011
Сообщения: 5
Репутация: 10
Радость даны координаты 3 точек на плоскости

мне нужно не delpi решить задачу:
даны координаты 3 точек на плоскости.если они могут быть вершинами остроугольного треугольника, вычислите их

буду очень признательна!
Ответить с цитированием
  #2  
Старый 10.09.2011, 21:45
Аватар для angvelem
angvelem angvelem вне форума
.
 
Регистрация: 18.05.2011
Адрес: Омск
Сообщения: 3,970
Версия Delphi: 3,5,7,10,12,XE2
Репутация: выкл
По умолчанию

Если координаты даны, что вычислять?
__________________
Je venus de nulle part
55.026263 с.ш., 73.397636 в.д.
Ответить с цитированием
  #3  
Старый 10.09.2011, 22:49
lmikle lmikle вне форума
Модератор
 
Регистрация: 17.04.2008
Сообщения: 8,093
Версия Delphi: 7, XE3, 10.2
Репутация: 49089
По умолчанию

Цитата:
Сообщение от angvelem
Если координаты даны, что вычислять?


Углы???
Собственно, тут прогрпммирования то никакого, сплошная математика.
Ответить с цитированием
  #5  
Старый 11.09.2011, 13:34
chainik chainik вне форума
Начинающий
 
Регистрация: 30.06.2008
Сообщения: 140
Репутация: 8882
По умолчанию

Вот программа которая считает углы (в радианах) по заданным координатам вершин
Но причем здесь программирование????????????
Теорема косинусов.............

Код:
program Project1;

{$APPTYPE CONSOLE}


uses Math;

var
Ax,Ay,Bx,By,Cx,Cy,
SqLenA,SqLenB,SqLenC: extended;
begin
writeln('‚ўҐ¤ЁвҐ Є®®а¤Ё**вл ўҐаиЁ*');
write('A: '); readln(Ax,Ay);
write('B: '); readln(Bx,By);
write('C: '); readln(Cx,Cy);

SqLenB:=(Ax-Cx)*(Ax-Cx) + (Ay-Cy)*(Ay-Cy);
SqLenA:=(Bx-Cx)*(Bx-Cx) + (By-Cy)*(By-Cy);
SqLenC:=(Ax-Bx)*(Ax-Bx) + (Ay-By)*(Ay-By);

writeln('”Ј«л');
writeln('C: ',ArcCos((SqLenA+SqLenB-SqLenC)/2/Sqrt(SqLenA*SqLenB)));
writeln('B: ',ArcCos((SqLenA+SqLenC-SqLenB)/2/Sqrt(SqLenA*SqLenC)));
writeln('A: ',ArcCos((SqLenC+SqLenB-SqLenA)/2/Sqrt(SqLenC*SqLenB)));


readln;
end.

Последний раз редактировалось chainik, 11.09.2011 в 13:38.
Ответить с цитированием
  #6  
Старый 12.09.2011, 00:10
any65 any65 вне форума
Прохожий
 
Регистрация: 10.09.2011
Сообщения: 5
Репутация: 10
По умолчанию

ну там сначала нужно проверить являются ли эти точки вершинами, а потом вычислить по координатам по формуле эти точки!!
вроде я так поняла)
Ответить с цитированием
  #7  
Старый 12.09.2011, 00:13
Аватар для Konrad
Konrad Konrad вне форума
Эксперт
 
Регистрация: 19.03.2009
Сообщения: 1,261
Репутация: 45834
По умолчанию

Цитата:
Сообщение от any65
вычислить по координатам по формуле эти точки!!
Что значит вычислить?

Если на плоскости поставить три точки, то всегда можно по ним построить треугольник.
Кроме случая, когда они будут лежать на одной прямой.
(хотя можно посчитать что это треугольник с углами 0, 0, 180 град.)
Ответить с цитированием
  #8  
Старый 12.09.2011, 00:32
Аватар для Aristarh Dark
Aristarh Dark Aristarh Dark вне форума
Модератор
 
Регистрация: 07.10.2005
Адрес: Москва
Сообщения: 2,907
Версия Delphi: Delphi XE
Репутация: выкл
По умолчанию

Ну йопт-тыть (это если без матов). 3 точки... координаты известны... расстояния расчитаны... "сумма двух любых сторон треугольника всегда больше третьей" - достаточно.
ЗЫЖ как дети.
__________________
Некоторые программисты настолько ленивы, что сразу пишут рабочий код.

Если вас наказали ни за что - радуйтесь: вы ни в чем не виноваты.
Ответить с цитированием
  #9  
Старый 12.09.2011, 07:27
any65 any65 вне форума
Прохожий
 
Регистрация: 10.09.2011
Сообщения: 5
Репутация: 10
Радость

ну вот именно этот случай и нужно исключить.
тока не ругайтесь))
Ответить с цитированием
  #10  
Старый 12.09.2011, 08:00
lmikle lmikle вне форума
Модератор
 
Регистрация: 17.04.2008
Сообщения: 8,093
Версия Delphi: 7, XE3, 10.2
Репутация: 49089
По умолчанию

Цитата:
Сообщение от any65
ну вот именно этот случай и нужно исключить.
тока не ругайтесь))

Ну так исключай.
Тебе уже все разжевали.

Вообще, проверять стороны не обязательно, т.к. по трем точкам (кстати, не важно на плоскости они или нет, т.к. плоскость тоже можно опрежелить через 3 точки) всегда можно построить треугольник. Может только быть вырожденный случай, когда они, точки, лежат на одной прямой.
Ответить с цитированием
  #11  
Старый 12.09.2011, 12:37
chainik chainik вне форума
Начинающий
 
Регистрация: 30.06.2008
Сообщения: 140
Репутация: 8882
По умолчанию

Выгодский. Справочник по высшей математике
Открываем:
3 точки лежат на 1 прямой тогда и только тогда
(X2-X1)*(Y3-Y1) - (X3-X1)*(Y2-Y1) = 0
т.е.
определитель

|x2-x1 y2-y1|
|x3-x1 y3-y1| = 0
Ответить с цитированием
  #12  
Старый 12.09.2011, 20:46
any65 any65 вне форума
Прохожий
 
Регистрация: 10.09.2011
Сообщения: 5
Репутация: 10
По умолчанию

напишите прогу то.
я профан!!)
Ответить с цитированием
  #13  
Старый 12.09.2011, 21:13
lmikle lmikle вне форума
Модератор
 
Регистрация: 17.04.2008
Сообщения: 8,093
Версия Delphi: 7, XE3, 10.2
Репутация: 49089
По умолчанию

а вот с этим в раздел "Работа".
либо пытаешься сам и задаешь КОНКРЕТНЫЕ вопросы с ТЕМ, ЧТО НЕ ПОЛУЧАЕТСЯ с приведением СВОЕГО кода.
Ответить с цитированием
  #14  
Старый 13.09.2011, 08:56
any65 any65 вне форума
Прохожий
 
Регистрация: 10.09.2011
Сообщения: 5
Репутация: 10
По умолчанию

Благодарю)
Ответить с цитированием
Ответ


Delphi Sources

Опции темы Поиск в этой теме
Поиск в этой теме:

Расширенный поиск
Опции просмотра

Ваши права в разделе
Вы не можете создавать темы
Вы не можете отвечать на сообщения
Вы не можете прикреплять файлы
Вы не можете редактировать сообщения

BB-коды Вкл.
Смайлы Вкл.
[IMG] код Вкл.
HTML код Выкл.
Быстрый переход


Часовой пояс GMT +3, время: 20:38.


 

Сайт

Форум

FAQ

Соглашения

Прочее

 

Copyright © Форум "Delphi Sources" by BrokenByte Software, 2004-2025