Как можно извлечь точки, которые образуют выпуклую оболочку трехмерного многоугольника в Matlab, используя функции выпуклой оболочки?

Я использую различные функции выпуклой оболочки в Matlab, чтобы найти координаты точек, которые формируют выпуклую оболочку. однако эти функции возвращают матрицу треугольников. Как я могу указать эти точки? Спасибо. Сепиде


person Sepideh    schedule 07.08.2012    source источник


Ответы (1)


Я не уверен, что полностью понимаю ваш вопрос. Может быть, если следующее не проясняет ситуацию, вы можете отредактировать свой пост, включив в него имя используемой вами функции MATLAB и фрагмент кода?

Функция convhull в MATLAB действительно возвращает индекс координат в выпуклой оболочке.

В следующем примере (x(k), y(k)) — это координаты. (взято прямо из документа convhull)

xx = -1:.05:1; yy = abs(sqrt(xx));
[x,y] = pol2cart(xx,yy);
k = convhull(x,y);
plot(x(k),y(k),'r-',x,y,'b+')

пример convhull

То же самое, если вместо этого вы используете convexhull (документ convexhull).

x = rand(10,1);
y = rand(10,1);
dt = DelaunayTri(x,y);
k = convexHull(dt);
plot(x,y, '.', 'markersize',10); 
hold on;
plot(x(k), y(k), 'r'); 
hold off;

пример выпуклого корпуса

person kitchenette    schedule 07.08.2012
comment
Спасибо. Однако мне нужны координаты образовавшихся выпуклостей. по форме это легко узнать, но у меня много трехмерных точек. - person Sepideh; 07.08.2012
comment
Могу я спросить вас, что находится внутри переменной k? может я неправильно понял. - person Sepideh; 07.08.2012
comment
(x,y) — все точки (синие точки). k — индексы тех точек, которые образуют выпуклую оболочку. Поместите его в Matlab, и вы обнаружите, что x (k (1)), y (k (1)) — это одна точка, x (k (2)), y (k (2)) — это другая точка, и поэтому на... - person kitchenette; 09.08.2012