2012-03-21 3 views
1

Мне нужно вычислить минимальную охватывающую сферу множества точек в 3D, которая уже окружена ориентированным ограничивающим прямоугольником (OBB).Минимальная охватывающая сфера - от OBB?

Является ли мое предположение правильным, что сфера может быть получена из OBB следующим образом?

sphere_radius = 0.5 * obb_diagonal 
sphere_center = obb_center 

Если нет,

  • почему?
  • Может ли OBB использовать вообще?
+0

Можете ли вы дать определение для «ориентированной ограничивающей рамки»? (как он ориентирован? всегда ли ориентация гарантирует минимизацию объема коробки?) –

ответ

2

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

В качестве контрпримера рассмотрим кубический ограничительную рамку из (-1,-1,-1) в (1,1,1), содержащий шесть точек в центре граней куба: (1,0,0), (-1,0,0), (0,1,0), (0,-1,0), (0,0,1), .

Минимальной ограничивающей сферой для этого множества точек будет шар радиуса 1, центрированный на (0,0,0). Шаром, созданным вашим предложенным алгоритмом, был бы шар радиуса 1.7 (ish) с центром в начале координат.

Вместо этого вы захотите использовать алгоритм для поиска минимальной ограничивающей сферы. Существуют алгоритмы для этого в линейном времени (см. this question для указателей на то, где искать. «Miniball» - хорошее ключевое слово для поиска.)