IPB
ЛогинПароль:

> Прочтите прежде чем задавать вопрос!

1. Заголовок темы должен быть информативным. В противном случае тема удаляется ...
2. Все тексты программ должны помещаться в теги [code=pas] ... [/code].
3. Прежде чем задавать вопрос, см. "FAQ", если там не нашли ответа, воспользуйтесь ПОИСКОМ, возможно такую задачу уже решали!
4. Не предлагайте свои решения на других языках, кроме Паскаля (исключение - только с согласия модератора).
5. НЕ используйте форум для личного общения, все что не относится к обсуждению темы - на PM!
6. Одна тема - один вопрос (задача)
7. Проверяйте программы перед тем, как разместить их на форуме!!!
8. Спрашивайте и отвечайте четко и по существу!!!

 
 Ответить  Открыть новую тему 
> Проверка подобия треугольников
Скрытная
сообщение 23.11.2007 0:42
Сообщение #1





Группа: Пользователи
Сообщений: 9
Пол: Женский
Реальное имя: Катерина

Репутация: -  0  +


по заданным координатам вершин двух треугольников (xA,yA,xB,yB...) нужно определить являются ли они подобными.

если кто-нибудь делал такое поделитесь мыслями... меня в задаче смущает что стороны в треугольниках получаются не целочисленными... тогда как опеределять их отношение =\

Сообщение отредактировано: Скрытная - 23.11.2007 0:44
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
volvo
сообщение 23.11.2007 0:57
Сообщение #2


Гость






Цитата
Два треугольника подобны, если выполняется одно из следующих условий, называемых признаками подобия:
1. Два угла одного треугольника равны двум углам другого треугольника.
2. Две стороны одного треугольника пропорциональны двум сторонам другого треугольника, а углы, образованные этими сторонами, равны.
3. Три стороны одного треугольника соответственно пропорциональны трем сторонам другого треугольника.
Так что, нет совершенно никакой необходимости завязываться на сторонах - можно найти углы и сравнить... Примеры нахождения сторон/углов по заданным координатам были на форуме.

Кстати, а в чем проблема с нецелочисленными сторонами? Что, к вещественным числам нельзя применять операцию деления?
 К началу страницы 
+ Ответить 
Lapp
сообщение 23.11.2007 7:04
Сообщение #3


Уникум
*******

Группа: Модераторы
Сообщений: 6 823
Пол: Мужской
Реальное имя: Лопáрь (Андрей)

Репутация: -  159  +


Цитата(Скрытная @ 23.11.2007 0:42) *
стороны в треугольниках получаются не целочисленными... тогда как опеределять их отношение =\
blink.gif ???
Определить отношение - нетрудно: операцию деления вещественных чисел, как отметил volvo, никто не отменял.. Вот сравнить потом эти отношения между собой - это уже задача. Из-за конечности представления чисел, а также ошибок в задании координат, числа могут отличаться в последних знаках, хотя по идее должны быть равны. Поэтому сравнивать нужно с учетом погрешности. Иначе говоря, нужно писать не так:
if a=b then ...
а так:
if Abs(a-b)<e then ...
- где e - это малое число, зависящее от порядков величин, использующихся в задаче (обычно на 8-10 порядков меньше этих величин, если ты используешь тип real). То есть если у тебя координаты порядка единиц или десятков, то можно взять e равным 10e-8.


--------------------
я - ветер, я северный холодный ветер
я час расставанья, я год возвращенья домой
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
volvo
сообщение 23.11.2007 9:20
Сообщение #4


Гость






Ну, кстати, сравнивать отношение целых чисел пришлось бы точно так же - деление всегда возвращает вещественный результат, и нельзя пользоваться простым "="...
 К началу страницы 
+ Ответить 
Lapp
сообщение 23.11.2007 11:38
Сообщение #5


Уникум
*******

Группа: Модераторы
Сообщений: 6 823
Пол: Мужской
Реальное имя: Лопáрь (Андрей)

Репутация: -  159  +


Цитата(volvo @ 23.11.2007 9:20) *
деление всегда возвращает вещественный результат,
- это смотря какое... div - таки нет! smile.gif


--------------------
я - ветер, я северный холодный ветер
я час расставанья, я год возвращенья домой
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
volvo
сообщение 23.11.2007 11:44
Сообщение #6


Гость






Но согласись, что проверять треугольник со сторонами <11, 12, 17> на подобие треугольнику со сторонами <3, 4, 5> используя DIV - просто верх легкомыслия smile.gif
 К началу страницы 
+ Ответить 
Lapp
сообщение 23.11.2007 11:57
Сообщение #7


Уникум
*******

Группа: Модераторы
Сообщений: 6 823
Пол: Мужской
Реальное имя: Лопáрь (Андрей)

Репутация: -  159  +


Соглашусь, конечно.
Но не большее, чем 99% поступков остальных новичков тут.. smile.gif


--------------------
я - ветер, я северный холодный ветер
я час расставанья, я год возвращенья домой
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
xds
сообщение 23.11.2007 13:44
Сообщение #8


N337
****

Группа: Пользователи
Сообщений: 737
Пол: Мужской

Репутация: -  26  +


Если координаты - целые числа, то
if (a1 * b2 = a2 * b1) and (b1 * c2 = b2 * c1) and (c1 * a2 = c2 * a1) then
{ подобны }
else
{ не подобны (бесподобны smile.gif)}
где a1, b1, c1, a2, b2, c2 - квадраты длин сторон треугольников, т. е.
a1 := Sqr(x12 - x11) + Sqr(y12 - y11);
a2 := Sqr(x22 - x21) + Sqr(y22 - y21);
b1 := Sqr(x13 - x12) + Sqr(y13 - y12);
b2 := Sqr(x23 - x22) + Sqr(y23 - y22);
c1 := Sqr(x11 - x13) + Sqr(y11 - y13);
c2 := Sqr(x21 - x23) + Sqr(y21 - y23);





--------------------
The idiots are winning.
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
Lapp
сообщение 23.11.2007 14:03
Сообщение #9


Уникум
*******

Группа: Модераторы
Сообщений: 6 823
Пол: Мужской
Реальное имя: Лопáрь (Андрей)

Репутация: -  159  +


Заменить пропорцию на произведение вполне разумно. yes2.gif
И, если не извлекать корни, то сравнение можно проводить точным равенством. yes2.gif
Согласен, так красивше. Конечно, если координаты - целые smile.gif. Но, судя по замечаниям автора темы, это скорее всего так и есть. smile.gif


--------------------
я - ветер, я северный холодный ветер
я час расставанья, я год возвращенья домой
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
xds
сообщение 23.11.2007 15:07
Сообщение #10


N337
****

Группа: Пользователи
Сообщений: 737
Пол: Мужской

Репутация: -  26  +


Подобное встречалось мне в какой-то олимпиадной задаче - прочие реализации не проходили некоторые тесты.


--------------------
The idiots are winning.
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 

 Ответить  Открыть новую тему 
1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0

 



- Текстовая версия 20.07.2025 3:09
Хостинг предоставлен компанией "Веб Сервис Центр" при поддержке компании "ДокЛаб"