exponenta event banner

nearestNeighbor

Определение ближайшей граничной точки альфа-формы

Описание

I = nearestNeighbor(shp,qx,qy), для 2-D альфа-фигуры shp, возвращает индексы точек на границе shp ближе всего к точкам запроса. I - массив ближайших соседних индексов, где каждый индекс соответствует индексу строки в shp.Points. qx и qy координаты запроса должны быть одинакового размера.

I = nearestNeighbor(shp,qx,qy,qz), для 3-D альфа-формы возвращает индексы граничных точек shp ближе всего к (qx,qy,qz) и соответствует индексам строк в shp.Points. qx, qy, и qz координаты запроса должны быть одинакового размера.

пример

I = nearestNeighbor(shp,QP) указывает точки запроса как матрицу QP. Для 2-D альфа-фигуры: QP является матрицей с двумя столбцами, представляющими qx и qy координаты. Для 3-D альфа-фигуры: QP имеет три столбца, представляющие qx, qy, и qz координаты.

I = nearestNeighbor(___,RegionID) возвращает индекс ближайшей точки, лежащей на границе области, указанной RegionID, где 1RegionIDnumRegions(shp). Можно включить любой из входных аргументов в предыдущие синтаксисы.

[I,D] = nearestNeighbor(___) дополнительно возвращает евклидово расстояние между точкой запроса и ближайшим соседом. D имеет тот же размер, что и I.

Примеры

свернуть все

Создайте набор 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];

Создайте и постройте график альфа-формы с радиусом альфа, равным 1.

shp = alphaShape(x,y,1);
plot(shp)
hold on

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

Вычислить ближайший shp граничная точка с точкой запроса QP. Постройте график точки запроса синим цветом и ближайшего граничного соседа красным.

QP = [6 3];
plot(QP(1),QP(2),'b.','MarkerSize',10)
hold on
I = nearestNeighbor(shp, QP);
plot(shp.Points(I,1),shp.Points(I,2),'r.','MarkerSize',10)

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 столбцы P представлять qx и qy координаты, соответственно.

  • Для 3-D столбцы P представлять qx, qy, и qz координаты, соответственно.

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

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

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

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

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

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

свернуть все

Ближайшие индексы соседей, возвращаемые как массив с целочисленным значением. Индексы соответствуют индексу строки shp.Points и указать точки на границе shp которые наиболее близки к заданным точкам запроса.

Расстояние от точек запроса до ближайших соседей, возвращаемое в виде числового массива. D является 2-D или 3-D евклидовым расстоянием и имеет тот же размер, что и I.

См. также

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