Как проверить, пересекаются ли треугольники? Моё почтение. Задача: Сгенерировать 2 рандомных треугольника в системе координат, и проверить, пересекаются ли они. Решил всё делать через canvas(а как же иначе). Сгенерировать 2 раза по 3 отрезка (по координатам точек), проверить, что треугольник может получиться из них. Затем соединить все три отрезка, что бы получились треугольники. Интересует, как именно можно проверить пересекаются ли они, или нет? Необходима формула с пояснением, где что. Благодарю.
Для проверки пересечения двух треугольников можно воспользоваться различными методами. Один из способов - это проверка пересечения сторон треугольников.
Для этого можно воспользоваться формулой для определения пересечения двух отрезков на плоскости. Для каждой пары сторон первого треугольника и второго треугольника проверяем их пересечение с каждой стороной другого треугольника. Если хотя бы одно пересечение найдено, то треугольники пересекаются.
Формула для определения пересечения двух отрезков на плоскости:
Пусть отрезок AB задан точками A(x1, y1) и B(x2, y2), отрезок CD задан точками C(x3, y3) и D(x4, y4).
Тогда формула пересечения отрезков имеет вид:
n = (x4-x3)*(y1-y3) - (y4-y3)*(x1-x3) m = (x2-x1)*(y1-y3) - (y2-y1)*(x1-x3)
Пересечение отрезков происходит, если n и m имеют противоположные знаки и тоже самое выполняется для отношения:
t = (x4-x3)*(y1-y3) - (y4-y3)*(x1-x3) / (y4-y3)*(x2-x1) - (x4-x3)*(y2-y1)
Если t находится в диапазоне от 0 до 1, то отрезки пересекаются.
Таким образом, применяя данную формулу для всех пар сторон двух треугольников, можно определить, пересекаются ли они.
Для проверки пересечения двух треугольников можно воспользоваться различными методами. Один из способов - это проверка пересечения сторон треугольников.
Для этого можно воспользоваться формулой для определения пересечения двух отрезков на плоскости. Для каждой пары сторон первого треугольника и второго треугольника проверяем их пересечение с каждой стороной другого треугольника. Если хотя бы одно пересечение найдено, то треугольники пересекаются.
Формула для определения пересечения двух отрезков на плоскости:
Пусть отрезок AB задан точками A(x1, y1) и B(x2, y2), отрезок CD задан точками C(x3, y3) и D(x4, y4).
Тогда формула пересечения отрезков имеет вид:
n = (x4-x3)*(y1-y3) - (y4-y3)*(x1-x3)m = (x2-x1)*(y1-y3) - (y2-y1)*(x1-x3)
Пересечение отрезков происходит, если n и m имеют противоположные знаки и тоже самое выполняется для отношения:
t = (x4-x3)*(y1-y3) - (y4-y3)*(x1-x3) / (y4-y3)*(x2-x1) - (x4-x3)*(y2-y1)Если t находится в диапазоне от 0 до 1, то отрезки пересекаются.
Таким образом, применяя данную формулу для всех пар сторон двух треугольников, можно определить, пересекаются ли они.