exponenta event banner

граница

Граница набора точек в 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около-3, где mtri - количество треугольных фасетов на границе. Каждая строка k определяет треугольник в терминах индексов точек, и треугольники вместе образуют ограничивающий многогранник.

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

  • Для 2-D проблем, v - область, окруженная границей k.

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

Алгоритмы

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

Представлен в R2014b