Проверка подобия треугольников |
1. Заголовок темы должен быть информативным. В противном случае тема удаляется ...
2. Все тексты программ должны помещаться в теги [code=pas] ... [/code], либо быть опубликованы на нашем PasteBin в режиме вечного хранения.
3. Прежде чем задавать вопрос, см. "FAQ", если там не нашли ответа, воспользуйтесь ПОИСКОМ, возможно такую задачу уже решали!
4. Не предлагайте свои решения на других языках, кроме Паскаля (исключение - только с согласия модератора).
5. НЕ используйте форум для личного общения, все что не относится к обсуждению темы - на PM!
6. Одна тема - один вопрос (задача)
7. Проверяйте программы перед тем, как разместить их на форуме!!!
8. Спрашивайте и отвечайте четко и по существу!!!
Проверка подобия треугольников |
Скрытная |
Сообщение
#1
|
Группа: Пользователи Сообщений: 9 Пол: Женский Реальное имя: Катерина Репутация: 0 |
по заданным координатам вершин двух треугольников (xA,yA,xB,yB...) нужно определить являются ли они подобными.
если кто-нибудь делал такое поделитесь мыслями... меня в задаче смущает что стороны в треугольниках получаются не целочисленными... тогда как опеределять их отношение =\ Сообщение отредактировано: Скрытная - |
volvo |
Сообщение
#2
|
Гость |
Цитата Два треугольника подобны, если выполняется одно из следующих условий, называемых признаками подобия: Так что, нет совершенно никакой необходимости завязываться на сторонах - можно найти углы и сравнить... Примеры нахождения сторон/углов по заданным координатам были на форуме.1. Два угла одного треугольника равны двум углам другого треугольника. 2. Две стороны одного треугольника пропорциональны двум сторонам другого треугольника, а углы, образованные этими сторонами, равны. 3. Три стороны одного треугольника соответственно пропорциональны трем сторонам другого треугольника. Кстати, а в чем проблема с нецелочисленными сторонами? Что, к вещественным числам нельзя применять операцию деления? |
Lapp |
Сообщение
#3
|
Уникум Группа: Пользователи Сообщений: 6 823 Пол: Мужской Реальное имя: Лопáрь (Андрей) Репутация: 159 |
стороны в треугольниках получаются не целочисленными... тогда как опеределять их отношение =\ ???Определить отношение - нетрудно: операцию деления вещественных чисел, как отметил volvo, никто не отменял.. Вот сравнить потом эти отношения между собой - это уже задача. Из-за конечности представления чисел, а также ошибок в задании координат, числа могут отличаться в последних знаках, хотя по идее должны быть равны. Поэтому сравнивать нужно с учетом погрешности. Иначе говоря, нужно писать не так: if a=b then ...а так: if Abs(a-b)<e then ...- где e - это малое число, зависящее от порядков величин, использующихся в задаче (обычно на 8-10 порядков меньше этих величин, если ты используешь тип real). То есть если у тебя координаты порядка единиц или десятков, то можно взять e равным 10e-8. -------------------- я - ветер, я северный холодный ветер
я час расставанья, я год возвращенья домой |
volvo |
Сообщение
#4
|
Гость |
Ну, кстати, сравнивать отношение целых чисел пришлось бы точно так же - деление всегда возвращает вещественный результат, и нельзя пользоваться простым "="...
|
Lapp |
Сообщение
#5
|
Уникум Группа: Пользователи Сообщений: 6 823 Пол: Мужской Реальное имя: Лопáрь (Андрей) Репутация: 159 |
деление всегда возвращает вещественный результат, - это смотря какое... div - таки нет! -------------------- я - ветер, я северный холодный ветер
я час расставанья, я год возвращенья домой |
volvo |
Сообщение
#6
|
Гость |
Но согласись, что проверять треугольник со сторонами <11, 12, 17> на подобие треугольнику со сторонами <3, 4, 5> используя DIV - просто верх легкомыслия
|
Lapp |
Сообщение
#7
|
Уникум Группа: Пользователи Сообщений: 6 823 Пол: Мужской Реальное имя: Лопáрь (Андрей) Репутация: 159 |
Соглашусь, конечно.
Но не большее, чем 99% поступков остальных новичков тут.. -------------------- я - ветер, я северный холодный ветер
я час расставанья, я год возвращенья домой |
xds |
Сообщение
#8
|
N337 Группа: Пользователи Сообщений: 737 Пол: Мужской Репутация: 26 |
Если координаты - целые числа, то
if (a1 * b2 = a2 * b1) and (b1 * c2 = b2 * c1) and (c1 * a2 = c2 * a1) thenгде a1, b1, c1, a2, b2, c2 - квадраты длин сторон треугольников, т. е. a1 := Sqr(x12 - x11) + Sqr(y12 - y11); -------------------- The idiots are winning.
|
Lapp |
Сообщение
#9
|
Уникум Группа: Пользователи Сообщений: 6 823 Пол: Мужской Реальное имя: Лопáрь (Андрей) Репутация: 159 |
Заменить пропорцию на произведение вполне разумно.
И, если не извлекать корни, то сравнение можно проводить точным равенством. Согласен, так красивше. Конечно, если координаты - целые . Но, судя по замечаниям автора темы, это скорее всего так и есть. -------------------- я - ветер, я северный холодный ветер
я час расставанья, я год возвращенья домой |
xds |
Сообщение
#10
|
N337 Группа: Пользователи Сообщений: 737 Пол: Мужской Репутация: 26 |
Подобное встречалось мне в какой-то олимпиадной задаче - прочие реализации не проходили некоторые тесты.
-------------------- The idiots are winning.
|
Текстовая версия | 11.01.2025 10:27 |