0

Я дал два кубоида с одной из их осей, выровненных (два других необязательных) и координаты их вершин (в глобальной системе координат), и я знаю, что они пересекающиеся. Я ищу алгоритм, который может рассчитать объем пересечения.(Численно) вычислить пересекающийся объем двух кубоидов

Чтобы проверить пересечение, я использовал теорему о разделительной оси.

+0

вы googled? –

+0

Да, но я пока ничего не нашел. –

+0

@AdrianPfeifle как насчет [этого] (https://stackoverflow.com/questions/17558077/finding-the-intersection-of-2-arbitrary-cubes-in-3d) ...? – Paul

ответ

0

Поскольку одна из осей выравнивается, алгоритм может быть как:

  • проекта кубоиды в 2D в выровненном направлении оси,
  • вычисления площади пересечения между двумя прямоугольниками в 2D,
  • проекта прямоугольные параллелепипеды в 1D на выровненной оси,
  • расчет пересечения 1D сегментов,
  • итоговый объем - площадь, умноженная на длину пересечения сегмента.
+0

Спасибо, это немного помогает, но в основном такая же проблема, как раньше. Как получить область пересечения двух случайно ориентированных прямоугольников в 2D? –

+0

В вашем случае они не должны быть ориентированы случайным образом. При хорошей проекции (трансформации) можно поместить один прямоугольник в исходное положение с выровненной стороной по оси. Чем углы и края второго прямоугольника можно проверить для пересечения с первым прямоугольником, и можно найти многоугольник вторжения. – Ante

+0

и как получить многоугольник пересечения? Я вижу много разных случаев, которые все должны быть охвачены. Нужно ли делать дифференциацию case для всех этих (второй прямоугольник, пересекающийся с одной, двумя, тремя вершинами, пересекающими один, два, три ребра и т. Д.)? –

1

Пересечение двух произвольных прямоугольников может быть построено по процедуре Сазерленда-Ходжмана (https://en.wikipedia.org/wiki/Sutherland%E2%80%93Hodgman_algorithm). В двух словах вы обрезаете один из прямоугольников четыре раза с помощью полуплоскостей, которые ограничивают друг друга. Результат будет варьироваться от четырехугольника до восьмиугольника.

enter image description here

Площадь многоугольника встречается с формулой шнурка.

Пересечение voume - призму, которой вы знаете основание и высоту.


Обратите внимание, что вы можете обобщить процедуру 3D и осуществить пересечение выпуклого многогранника с полупространством (ЗАЖИМ каждое лица с полупространством и подключить вновь сформированные края, чтобы получить лицо из раздел). Это позволяет решить проблему для произвольно ориентированных кубоидов.

Смежные вопросы