boundary

Контур набора точек в 2D или 3-D

Описание

пример

k = boundary(x,y) возвращает вектор из индексов точки, представляющих один соответствующий 2D контур вокруг точек (x,y). Точки (x(k),y(k)) сформируйте контур. В отличие от выпуклой оболочки, контур может уменьшиться к внутренней части оболочки, чтобы окутать точки.

пример

k = boundary(x,y,z) возвращает триангуляцию, представляющую один соответствующий 3-D контур вокруг точек (x,y,z). Каждая строка k треугольник, заданный в терминах индексов точки.

пример

k = boundary(P) задает указывает (x,y) или (x,y,z) в столбцах матричного P.

пример

k = boundary(___,s) задает фактор уменьшения s использование любого из предыдущих синтаксисов. s скаляр между 0 и 1. Установка s к 0 дает выпуклую оболочку и установку s к 1 дает компактный контур, который окутывает точки. Фактором уменьшения по умолчанию является 0.5.

пример

[k,v] = boundary(___) также возвращает скалярный v, который является (2D) областью или объем (3-D) который контур k заключает.

Примеры

свернуть все

Создайте и постройте набор случайных 2D точек.

rng('default')
x = rand(30,1);
y = rand(30,1);
plot(x,y,'.')
xlim([-0.2 1.2])
ylim([-0.2 1.2])

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

Вычислите контур вокруг точек с помощью фактора уменьшения по умолчанию.

k = boundary(x,y);
hold on;
plot(x(k),y(k));

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

Создайте новый контур вокруг точек с помощью фактора уменьшения 0,1. Результатом является менее компактный контур, окутывающий точки.

j = boundary(x,y,0.1);
hold on;
plot(x(j),y(j));

Figure contains an axes object. The axes object contains 3 objects of type line.

Создайте и постройте набор случайных 3-D точек.

rng('default')
P = rand(30,3);
plot3(P(:,1),P(:,2),P(:,3),'.','MarkerSize',10)
grid on

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

Постройте контур с помощью фактора уменьшения по умолчанию.

k = boundary(P);
hold on
trisurf(k,P(:,1),P(:,2),P(:,3),'Facecolor','red','FaceAlpha',0.1)

Figure contains an axes object. The axes object contains 2 objects of type line, patch.

Создайте и постройте набор случайных 3-D точек.

rng default;
P = rand(30,3);
plot3(P(:,1),P(:,2),P(:,3),'.')
grid on

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

Вычислите два контура: один с фактором уменьшения 0 и другой с фактором уменьшения 1.

k = boundary(P,0);
j = boundary(P,1);

Сравните факторы уменьшения путем графического вывода исходных точек и этих двух контуров рядом друг с другом.

subplot(1,2,1);
plot3(P(:,1),P(:,2),P(:,3),'.','MarkerSize',10)
hold on
trisurf(k,P(:,1),P(:,2),P(:,3),'FaceColor','red','FaceAlpha',0.1)
axis equal
title('Shrink Factor = 0')

subplot(1,2,2);
plot3(P(:,1),P(:,2),P(:,3),'.','MarkerSize',10)
hold on
trisurf(j,P(:,1),P(:,2),P(:,3),'FaceColor','red','FaceAlpha',0.1)
axis equal
title('Shrink Factor = 1')

Figure contains 2 axes objects. Axes object 1 with title Shrink Factor = 0 contains 2 objects of type line, patch. Axes object 2 with title Shrink Factor = 1 contains 2 objects of type line, patch.

Создайте и постройте набор случайных 3-D точек.

rng('default')
P = rand(30,3);
plot3(P(:,1),P(:,2),P(:,3),'.')
grid on

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

Используйте boundary функция, чтобы вычислить контур вокруг точек и найти объем получившейся формы.

[~, vol] = boundary(P);
vol
vol = 0.2962

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

свернуть все

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

Типы данных: double

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

Типы данных: double

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

Типы данных: double

Укажите координаты в виде матрицы с двумя столбцами (для 2D альфа-формы) или матрицы с тремя столбцами (для 3-D альфа-формы).

  • Для 2D, столбцов P представляйте x и y координаты, соответственно.

  • Для 3-D, столбцов P представляйте xY, и z координаты, соответственно.

Типы данных: double

Фактор уменьшения в виде скаляра в области значений [0,1].

  • s = 0 соответствует выпуклой оболочке точек.

  • s = 1 соответствует самому трудному контуру одно области вокруг точек.

Фактором уменьшения по умолчанию является 0.5. Задайте больший или меньший фактор уменьшения, чтобы сжать или ослабить контур вокруг точек, соответственно.

Пример: k = boundary(x,y,0.76) задает фактор уменьшения 0.76, создание более трудного контура, чем значение по умолчанию.

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

свернуть все

Индексы граничной точки, возвращенные как вектор или матрица. k содержит индексы точек ввода, которые лежат на контуре.

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

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

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

  • Для 2D проблем, v область, заключенная контуром k.

  • Для 3-D проблем, v объем, заключенный контуром k.

Алгоритмы

boundary создает alphaShape от заданных точек и затем использует boundaryFacets определить, какие точки лежат на контуре.

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

Введенный в R2014b