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))

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

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

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

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

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

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

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