Я пишу код, который будет строить дерево ориентированной ограничивающей рамки (obb) для (не обязательно выпуклого) многоугольника в 2 измерения.
До сих пор я мог найти минимальную по площади плоскость многоугольника, найдя его выпуклую оболочку и используя вращающиеся штангенциркули на этой оболочке.
Изображение ниже является примером этого. Залитый желтым многоугольник с красными линиями и красными точками изображает исходный многоугольник. Выпуклая оболочка показана синим цветом с черными линиями, а куб — фиолетовыми линиями.
Теперь я хочу расширить свой код для построения дерева OBB, а не только OBB. Это означает, что я должен вырезать полигон и вычислить новые OBB для каждой половины полигона.
Рекомендуемый способ сделать это, по-видимому, состоит в том, чтобы разрезать полигон, разрезав OBB пополам. Но если я разрезаю квадрат посередине по любой из его осей, похоже, мне придется создавать новые вершины на многоугольнике (иначе как мне найти выпуклую оболочку этого раздела?).