exponenta event banner

inShape

Определить, находится ли точка внутри альфа-формы

Описание

пример

tf = inShape(shp,qx,qy) возвращает логический 1 (true) значения для точек запроса 2-D (qx,qy) которые находятся в пределах 2-D альфа-формы shp. В противном случае inShape возвращает значения логических 0 (false). qx и qy аргументы - это числовые массивы, соответствующие элементы которых определяют (x,y) запрос координат точки.

tf = inShape(shp,qx,qy,qz) проверяет, указывает ли 3-D запрос (qx,qy,qz) находятся в пределах 3-D альфа-формы shp.

tf = inShape(shp,QP) указывает 2-D или 3-D координаты точки запроса в матрице с 2 или 3 столбцами.

tf = inShape(___,RegionID) проверяет, находятся ли точки запроса в пределах определенной области альфа-фигуры, используя любой из предыдущих синтаксисов. RegionID - идентификатор региона и 1RegionIDnumRegions(shp).

[tf,ID] = inShape(___) также возвращает идентификаторы областей альфа-фигуры, содержащих точки запроса. ID является NaN для точек запроса, не входящих в альфа-фигуру.

Примеры

свернуть все

Создайте набор 2-D точек.

th = (pi/12:pi/12:2*pi)';
x1 = [reshape(cos(th)*(1:5), numel(cos(th)*(1:5)),1); 0];
y1 = [reshape(sin(th)*(1:5), numel(sin(th)*(1:5)),1); 0];
x = [x1; x1+15;];
y = [y1; y1];

Создайте и постройте график альфа-формы, используя альфа-радиус 2,5.

shp = alphaShape(x,y,2.5);
plot(shp)

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

Создайте декартову сетку точек запроса рядом с альфа-фигурой.

[qx, qy] = meshgrid(-10:2:25, -10:2:10);

Проверьте, находятся ли точки запроса внутри альфа-фигуры, и если да, запишите их красным цветом. Постройте график точек запроса, расположенных за пределами альфа-фигуры, синим цветом.

in = inShape(shp,qx,qy);
plot(shp)
hold on
plot(qx(in),qy(in),'r.')
plot(qx(~in),qy(~in),'b.')

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

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

свернуть все

Альфа-форма, заданная как alphaShape объект. Дополнительные сведения см. в разделе alphaShape.

Пример: shp = alphaShape(x,y) создает 2-D alphaShape объект из (x,y) координаты точек.

Запросите координаты точки X, указанные как числовой массив.

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

Запросите координаты точки y, указанные как числовой массив.

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

Запрос координат точки z, заданных как числовой массив.

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

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

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

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

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

Идентификационный номер для области в альфа-форме, указанный как положительный целочисленный скаляр между 1 и numRegions(shp).

Альфа-форма может содержать несколько меньших областей в зависимости от набора точек и параметров. Каждому из этих меньших регионов присвоен уникальный RegionID, который нумерует области от наибольшей площади или объема до наименьшего. Например, рассмотрим 3-D альфа-форму с двумя областями. Регион с наибольшим объёмом имеет RegionID 1, и меньшая область имеет RegionID из 2.

Пример: shp.RegionThreshold = area(shp,numRegions(shp)-2); подавляет две наименьшие области в альфа 2-D форме shp.

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

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

свернуть все

Состояние точек запроса, возвращаемых в виде логического массива. Размер tf равен размеру входных данных, задающих точки запроса (qx, qy, qz, или QP).

inShape возвращает логический 1 (true) значения для точек, которые находятся в пределах альфа-фигуры или точно на границе.

Идентификаторы областей, содержащих точки запроса, возвращаемые в виде числового массива. ID имеет тот же размер, что и tf.

См. также

|

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