Skip to content

solving the intersection of triangles in 3D problem (HW3D in yLab course 22/23 with Vladimirov)

Notifications You must be signed in to change notification settings

AlexArutiunian/Triangles_3D

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

57 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

I Случай компланарных треугольников (расстояние от каждой вершины T1 до П2 (в которой лежит T2) равно нулю)

1 случай

Проверять все ребра Т1 на пересечение со всеми Т2, если хотя бы одно пересеклось (задача пересечения отрезков из 35 главы, вроде 800 страница Кормена) то соответсвенно треугольники пересекаются.

2 случай

Если ни одна пара ребер не пересекается то проверить лежит ли один треугольник внутри другого (это задача проверки принадлежности точки треугольнику)

II Случай, когда расстояние от каждой вершины T1 до П2 (в которой лежит T2) не равно нулю и одного знака.

В этом случае за счет того что расстояния от вершин до плоскости одного знака T1 лежит на одной стороне П2 и, следовательно, пересечение невозможно. Поэтому необходимо найти растоянние от точек Т1 до плоскости П2, для этого воспользуемся формулой:

Далее просто проверим знаки каждого расстояния, то есть если все положительные или отрицательные, то теругольники точно не пересекаются.
Optimization: Причем II случай не требует выполнения для обоих треугольников, если II выполнен хотя бы для T1, то пересечения треугольников уже абсолютно точно не будет, поэтому не имеет смысла проверять для треугольника T2.

III случай, когда не выполнены I и II.

Пишем уравнение линии пересечения П1 и П2: L = O + t * D
Из II следует, что оба треугольника гарантированно пересекают L. Эти пересечения образуют интервал на L Если эти интервалы пересекаются, то треугольники тоже пересекаются.

Таким образом нужно найти пересечение между ребрами V10V11 и V11V12.

Аналогичную величину нужно найти и для T2. Таким образом если эти отрезки в одномере пересекаются, то и треугольники в пространстве пересекаются.

С помощью данной формулы находим точку в которую опускается перепендикуляр из точек треугольника на прямую L:

Optimization: Можно перенести вектора в начало координат и тогда отбросить начальную точку O

Далее мы находим значение параметра t, в точках пересечения треугольника с прямой L:

Следующим шагом мы анологично проводим такие же вычесления для другого треугольника и сравниваем эти точки. То есть если одна точка пересечения лежит в промежутке между двумя другими, то можно сделать вывод, что треугольники однозначно перескаются.

About

solving the intersection of triangles in 3D problem (HW3D in yLab course 22/23 with Vladimirov)

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published