У меня есть информация о 3D-самолетах. Когда все самолеты объединятся, он сформирует трехмерный выпуклый корпус.
Вот пример ввода.
Каждая трехмерная плоскость обозначается точкой на плоскости и ее нормалью.
Все нормали указывают внутрь: -
- (-1,0,0) with normal = (1,0,0)
- ( 1,0,0) with normal = (-1,0,0)
- (0,-1,0) with normal = (0,1,0)
- (0,1,0) with normal = (0,-1,0)
- (0,0,-1) with normal = (0,0,1)
- (0,0,1) with normal = (0,0,-1)
- (0.142,-7.18,10.12) with normal = (0.001,0.31,-0.95)
- note: some planars can be redundant (contribute nothing) e.g. the last one
Вопрос: Как рассчитать AABB из него?
Решение из приведенного выше примера: ((-1,-1,-1),(1,1,1))
.
(Сначала я хочу центр масс, но я понял, , что это трудная проблема .
AABB должен быть достаточно хорош для меня. )
Мое плохое решение - найти все вершины корпуса, используя Конструктивная геометрия твердого тела , затем выполнить MIN & MAX для них, но производительность слишком плохая.
В реальном случае я хочу найти центральную точку трехмерного корпуса, когда два выпуклых корпуса перекрываются.
Эта информация может быть полезна для более точного ответа на столкновения в Physics Engine.