slavav
А по-английски эти "толстые" оболочки как правильно зовутся?
В MATLAB такого функционала нет, по крайней мере в функции convhull. Можно ещё посмотреть библиотеку CGAL.
Как зовутся они зовутся по-английски я не знаю, к сожалению.
А код convhull есть? Тогда можно посмотреть как его модифицировать.
Например в алгоритме заворачивания подарка вы по текущему ребру строите следующее. Для этого вы отыскиваете точку, которая реализует минимальный поворот. Если таких точек несколько и вы из них выбираете самую далёкую, то вы строите "тонкую" ВО. Напротив, если из этих точек вы выбираете самую близкую, то получится "толстая" ВО.
http://en.wikipedia.org/wiki/Gift_wrapping_algorithm:
Цитата:
The algorithm may be easily modified to deal with collinearity, including the choice whether it should report only extreme points (vertices of the convex hull) or all points that lie on the convex hull.
Я упомянул алгоритм заворачивания подарка, так как он легко поднимается в пространство. Там вы по грани и её ребру ищете точки, которые реализуют минимальный угол поворота вокруг ребра. Рассмотрим все такие точки плюс два конца ребра, вокруг которого мы вращались. Всё это множество лежит в одной плоскости. Если вы в этой плоскости построите ВО, то она будет гранью ВО в пространстве. Важно, что пока вы искали новую грань, вы узнали все точки исходного множества, которые принадлежат этой грани.