Помощь - Поиск - Пользователи - Календарь
Полная версия: Задача геометрическая
Форум «Всё о Паскале» > Pascal, Object Pascal > Задачи
Ozzя
Цитата
Определить, имеют ли общие точки две плоские фигуры – треугольник с заданными координатами его вершин и круг радиусом R c центром в начале координат.

Что-то вовсе туплю sad.gif Не соображу, как подступиться
Пните, пожалуйста, в правильном направлении. rolleyes.gif
Michael_Rybak
Пусть вершины треугольника - точки А, В и С.

1. Проверяешь, лежит ли точка А в круге. Проверяешь, лежит ли точка (0, 0) в треугольнике.
2. Если нет, то мы исключили вариант, когда круг полностью лежит в треугольнике, или наоборот. Теперь, если общие точки есть, то общие точки должны быть и у контуров фигур. Значит, нужно написать функцию, которая будет проверять наличие пересечения между отрезком (стороной) и окружностью, и вызвать ее для каждой стороны.
3. Отрезок пересекает окружность, если а) один конец - внутри, другой снаружи, либо 2) оба конца - снаружи, а основание перпендикуляра, опущенного из центра окружности на прямую, содержащую отрезок, лежит внутри круга, и принадлежит отрезку.
Archon
Цитата
1. Проверяешь, лежит ли точка А в круге. Проверяешь, лежит ли точка (0, 0) в треугольнике.
blink.gif Этими проверками не корректно исключать
Цитата
вариант, когда круг полностью лежит в треугольнике, или наоборот
Ты легко можешь исключить варианты, когда пересечения присутствуют.
мисс_граффити
Так если одна из фигур лежит внутри другой, общие точки тоже есть.
Все правильно...
Archon
Но как этими проверками определить, лежит ли одна фигура внутри другой?
мисс_граффити
нам не надо это определять однозначно! главное, что если одна фигура лежит внутри другой, п.1 гарантированно выполняется. согласен?
а что вместе с этим идут "лишние" варианты - не страшно, т.к. они тоже удовлетворяют условию задачи.
Archon
Хорошо... Проверяя пункт 1, мы делим все возможные варианты на те, в которых возможно, что одна фигура лежит внутри другой, и те, в которых это не возможно. Что это даёт?
мисс_граффити
проверяя первый пункт, мы выделяем группу случаев, удовлетворяющих двум условиям:
1) фигуры однозначно имеют общие точки
2) если одна фигура лежит внутри другой, то этот случай однозначно войдет в группу.

после этого мы можем сказать, что, если первое условие не выполнено, но фигуры имеют общие точки, то и их стороны имеют общие точки.
Bokul
Цитата
Проверяя пункт 1, мы делим все возможные варианты на те, в которых возможно, что одна фигура лежит внутри другой, и те, в которых это не возможно. Что это даёт?

Исключаем два первых варианты:Нажмите для просмотра прикрепленного файла
Archon
Чёрт! Не понял условие... Там ведь круг, а не окружность. И треугольник очевидно заполненный. Извиняюсь за лишнюю панику smile.gif
Это текстовая версия — только основной контент. Для просмотра полной версии этой страницы, пожалуйста, нажмите сюда.