convhull

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

Описание

пример

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

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

пример

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

пример

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

пример

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

Примеры

свернуть все

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

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 -cordinates, y -cordinates и (в трёх размерностях) z -cordinates.

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

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

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

Упростите индикатор, заданный как числовой или логический 0 (false) или 1 (true).

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

свернуть все

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

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

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

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

Совет

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

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

.

См. также

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