Я использую различные функции выпуклой оболочки в Matlab, чтобы найти координаты точек, которые формируют выпуклую оболочку. однако эти функции возвращают матрицу треугольников. Как я могу указать эти точки? Спасибо. Сепиде
Как можно извлечь точки, которые образуют выпуклую оболочку трехмерного многоугольника в Matlab, используя функции выпуклой оболочки?
Ответы (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+')
То же самое, если вместо этого вы используете 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
Спасибо. Однако мне нужны координаты образовавшихся выпуклостей. по форме это легко узнать, но у меня много трехмерных точек.
- person Sepideh; 07.08.2012
Могу я спросить вас, что находится внутри переменной k? может я неправильно понял.
- person Sepideh; 07.08.2012
(x,y) — все точки (синие точки). k — индексы тех точек, которые образуют выпуклую оболочку. Поместите его в Matlab, и вы обнаружите, что x (k (1)), y (k (1)) — это одна точка, x (k (2)), y (k (2)) — это другая точка, и поэтому на...
- person kitchenette; 09.08.2012