@DarCKoder

Как проверить, пересекаются ли треугольники?

Моё почтение.
Задача: Сгенерировать 2 рандомных треугольника в системе координат, и проверить, пересекаются ли они.

Решил всё делать через canvas(а как же иначе).
Сгенерировать 2 раза по 3 отрезка (по координатам точек), проверить, что треугольник может получиться из них.
Затем соединить все три отрезка, что бы получились треугольники.

Интересует, как именно можно проверить пересекаются ли они, или нет?
Необходима формула с пояснением, где что.
Благодарю.
  • Вопрос задан
  • 3359 просмотров
Пригласить эксперта
Ответы на вопрос 5
Rsa97
@Rsa97
Для правильного вопроса надо знать половину ответа
Варианты: не пересекаются, касаются снаружи, пересекаются, один касается другого изнутри, один полностью вложен во второй.

Пересекаются - какая-либо сторона одного треугольника пересекается с какой-нибудь стороной второго и стороны не параллельны, для каждой стороны первого треугольника проверяем каждую сторону второго.

Один полностью внутри другого - все вершины треугольника A расположены по одну сторону от сторон второго треугольника B, обходимого по контуру, то есть от отрезков B1B2, B2B3, B3B1.

Касание - вершина одного из треугольников лежит на стороне другого треугольника или сторона одного треугольника параллельна стороне второго и пересекается с ней.
Ответ написан
orlov0562
@orlov0562
I'm cool!
забей на треугольники, проверь пересекаются ли прямые (из которых состоят треугольники). Если хотя бы одна прямая имеет пересечение, значит и фигуры пересекаются
Ответ написан
@evgeniy_lm
Проверь пресечение сторон треугольника. Нужно найти точки пересечения прямых проходящих через стороны и убедится что эти точки лежат на сторонах треугольника
Ответ написан
Комментировать
x67
@x67
1. Получаете уравнения прямой для каждой из сторон каждого треугольника (y=kx+b и cоответствующее уравнение x=(y-b)/k)
обоснование решения: аксиома 1. При пересечении фигур, хотя бы одна вершина одной из фигур будет лежать на другой фигуре.
Далее при чтении см. Рисунок
2. Поочередно подставляете каждую координату каждой из вершин в получившиеся уравнения, красной линией показана геометрическая интерпретация подстановки X синей точки(предполагаемой вершины треугольника). При этом мы подставляем Х синей точки только в уравнения тех линий, у которых этот Х тоже присутствует. Геом. интерпретация - коричневые линии. То есть Х синей точки вне диапазона правой серой линии по Х, потому мы эту линию не проверяем.
Когда будем подставлять У, мы не будем проверять нижнюю линию по этой же причине.
Чтобы вершина, находилась внутри треугольника, вторая координата синей точки должна быть внутри интервала, полученного из уравнений (геом. интерпретация - зеленые линии - тот самый интервал, внутри которого должен быть Y синей точки).
Таким образом, если хоть одна из вершин проходит проверку и по Х и по У, она находится внутри или на поверхности другого треугольника и треугольники пересекаются.
2b72aec4ed0c4dbe87107299ed3ba213.png

Если не совсем понятно, спрашивайте. А вообще лучше бы вам найти готовый велосипед и не парить себе мозги.
Ответ написан
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы