nearestNeighbor

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

Описание

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

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