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