exponenta event banner

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

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

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

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

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

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

свернуть все

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

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

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

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

Совет

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

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

.

См. также

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