boundary

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

Описание

пример

k = boundary(x,y) возвращает вектор индексов точек, представляющий один соответствующий 2 -D контур вокруг точек (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, которая является областью (2-D) или объемом (3-D), какой контур k заключает.

Примеры

свернуть все

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

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. The axes contains an object of type line.

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

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

Figure contains an axes. The axes 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. The axes 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. The axes 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. The axes 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. The axes 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. Axes 1 with title Shrink Factor = 0 contains 2 objects of type line, patch. Axes 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. The axes contains an object of type line.

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

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

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

свернуть все

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

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

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

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

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

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

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

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

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

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

Коэффициент усадки, заданный как скаляр в области значений [0,1].

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

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

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

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

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

свернуть все

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

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

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

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

  • Для задач 2-D, v - область, окружённый контур k.

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

Алгоритмы

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

Введенный в R2014b