convhull

Выпуклая оболочка

Описание

пример

k = convhull(P) вычисляет 2D или 3-D выпуклую оболочку точек в матричном P.

k = convhull(x,y) вычисляет 2D выпуклую оболочку точек в вектор-столбцах x и y.

пример

k = convhull(x,y,z) вычисляет 3-D выпуклую оболочку точек в вектор-столбцах xY, и z.

пример

k = convhull(___,'Simplify',tf) задает, удалить ли вершины, которые не способствуют области или объему выпуклой оболочки. tf false по умолчанию.

пример

[k,av] = convhull(___) также вычисляет область или объем выпуклой оболочки.

Примеры

свернуть все

Создайте матрицу 2D точек. Вычислите выпуклую оболочку и ее область.

P = [0 0; 1 1; 1.5 0.5; 1.5 -0.5; 1.25 0.3; 1 0; 1.25 -0.3; 1 -1];
[k,av] = convhull(P);

Постройте исходные точки и выпуклую оболочку.

plot(P(:,1),P(:,2),'*')
hold on
plot(P(k,1),P(k,2))

Figure contains an axes. The axes contains 2 objects of type line.

Отобразите область.

av
av = 1.7500

Упростите 3-D выпуклую оболочку путем удаления точек, которые не влияют на ее объем.

Создайте набор 3-D точек. Вычислите выпуклую оболочку и ее объем. Постройте выпуклую оболочку.

[x,y,z] = meshgrid(-2:1:2,-2:1:2,-2:1:2);
x = x(:);
y = y(:);
z = z(:);

[k1,av1] = convhull(x,y,z);

trisurf(k1,x,y,z,'FaceColor','cyan')
axis equal

Figure contains an axes. The axes contains an object of type patch.

Вычислите и постройте упрощенную версию выпуклой оболочки, которая содержит меньше точек, но сохраняет объем.

[k2,av2] = convhull(x,y,z,'Simplify',true);

trisurf(k2,x,y,z,'FaceColor','cyan')
axis equal

Figure contains an axes. The axes contains an object of type patch.

Отобразите объемы обеих выпуклых оболочек. Объемы являются тем же самым, но упрощенная выпуклая оболочка использует меньше точек.

av1
av1 = 64.0000
av2
av2 = 64

Входные параметры

свернуть все

Точки в виде матрицы, столбцами которой является x - координаты, y - координаты, и (в трех измерениях) z - координаты.

x- в виде вектор-столбца.

y- в виде вектор-столбца.

z- в виде вектор-столбца.

Упростите индикатор в виде числового или логического 0 ложь) или 1 TRUE).

Выходные аргументы

свернуть все

Индексы, возвращенные как вектор или матрица.

  • Для 2D точек, k вектор-столбец, содержащий индексы строки точек ввода, которые составляют выпуклую оболочку, расположенную против часовой стрелки.

  • Для 3-D точек, k матрица с 3 столбцами, представляющая триангуляцию, которая составляет выпуклую оболочку. Каждая строка представляет фасет триангуляции. Значения представляют индексы строки точек ввода.

Область или объем выпуклой оболочки, возвращенной как скаляр.

Советы

  • Построить выход convhull в двух измерениях используйте plot функция. Построить выход convhull в трех измерениях использовать trisurf или trimesh.

Расширенные возможности

Смотрите также

Представлено до R2006a