Точки расположены внутри или в напряжении из многоугольной области
in = inpolygon(xq,yq,xv,yv)
[in,on] = inpolygon(xq,yq,xv,yv)
возвращает in = inpolygon(xq,yq,xv,yv)
in
, указывающий, ли точки запроса, заданные xq
и yq
, внутри или на краю области полигона, заданной xv
и yv
.
также возвращает [in,on] = inpolygon(xq,yq,xv,yv)
on
, указывающий, находятся ли точки запроса на краю области полигона.
Задайте пятиугольник и набор точек. Затем определите, какие точки лежат внутри (или на краю) пятиугольника.
Задайте координаты x и y вершин полигона, чтобы создать пятиугольник.
L = linspace(0,2*pi,6); xv = cos(L)'; yv = sin(L)';
Задайте координаты x и y 250 случайных точек запроса. Инициализируйте генератор случайных чисел, чтобы сделать вывод randn
повторяемым.
rng default
xq = randn(250,1);
yq = randn(250,1);
Определите, находится ли каждая точка внутри или на краю области полигона. Также определите, лежит ли какая-либо из точек на краю области полигона.
[in,on] = inpolygon(xq,yq,xv,yv);
Определите число точек, лежащее внутри или на краю области полигона.
numel(xq(in))
ans = 80
Определите число точек, лежащее на краю области полигона.
numel(xq(on))
ans = 0
С тех пор нет никаких точек, лежащих на краю области полигона, все 80 точек, идентифицированных xq(in)
, yq(in)
строго в области полигона.
Определите число точек, лежащее вне области полигона (не внутри или на краю).
numel(xq(~in))
ans = 170
Постройте график полигона и точек запроса. Отобразите точки в полигоне с красным плюс. Отобразите точки вне полигона с синим кругом.
figure plot(xv,yv) % polygon axis equal hold on plot(xq(in),yq(in),'r+') % points inside plot(xq(~in),yq(~in),'bo') % points outside hold off
Найдите точки в квадрате с квадратным отверстием.
Задайте квадратную область с квадратным отверстием. Задайте вершины внешнего цикла в направлении против часовой стрелки и задайте вершины для внутреннего цикла в направлении по часовой стрелке. Используйте NaN
, чтобы разделить координаты для внешних и внутренних циклов.
xv = [1 4 4 1 1 NaN 2 2 3 3 2]; yv = [1 1 4 4 1 NaN 2 3 3 2 2];
Задайте координаты x и y 500 случайных точек. Инициализируйте генератор случайных чисел, чтобы сделать вывод randn
повторяемым.
rng default
xq = rand(500,1)*5;
yq = rand(500,1)*5;
Определите, находится ли каждая точка внутри или на краю области полигона.
in = inpolygon(xq,yq,xv,yv);
Постройте график полигона и точек запроса. Отобразите точки в полигоне с красным плюс. Отобразите точки вне полигона с синим кругом.
figure plot(xv,yv,'LineWidth',2) % polygon axis equal hold on plot(xq(in),yq(in),'r+') % points inside plot(xq(~in),yq(~in),'bo') % points outside hold off
Точки запроса в квадратном отверстии вне полигона.
Задайте координаты x и y для пентаграммы.
xv = [0.5;0.2;1.0;0;0.8;0.5]; yv = [1.0;0.1;0.7;0.7;0.1;1];
Задайте координаты x и y 12 точек запроса.
xq = [0.1;0.5;0.9;0.2;0.4;0.5;0.5;0.9;0.6;0.8;0.7;0.2]; yq = [0.4;0.6;0.9;0.7;0.3;0.8;0.2;0.4;0.4;0.6;0.2;0.6];
Определите, находится ли каждая точка внутри или на краю области полигона. Также определите, лежит ли какая-либо из точек на краю области полигона.
[in,on] = inpolygon(xq,yq,xv,yv);
Определите число точек, лежащее внутри или на краю области полигона.
numel(xq(in))
ans = 8
Определите число точек, лежащее на краю области полигона.
numel(xq(on))
ans = 2
Определите число точек, лежащее вне области полигона (не внутри или на краю).
numel(xq(~in))
ans = 4
Постройте график полигона и точек. Отобразите точки строго в полигоне с красным плюс. Отобразите точки на краю с черной звездочкой. Отобразите точки вне полигона с синим кругом.
figure plot(xv,yv) % polygon hold on plot(xq(in&~on),yq(in&~on),'r+') % points strictly inside plot(xq(on),yq(on),'k*') % points on edge plot(xq(~in),yq(~in),'bo') % points outside hold off
Шесть точек лежат в полигоне. Две точки лежат на краю полигона. Четыре точки лежат вне полигона.
xq
x-координаты точек запросаx-координаты точек запроса, заданных как скаляр, вектор, матрица или многомерный массив.
Размер xq
должен совпадать с размером yq
.
Типы данных: double | single
yq
y-координаты точек запросаy-координаты точек запроса, заданных как скаляр, вектор, матрица или многомерный массив.
Размер yq
должен совпадать с размером xq
.
Типы данных: double | single
xv
x-координаты вершин полигонаx-координаты вершин полигона, заданных как вектор.
Размер xv
должен совпадать с размером yv
.
Чтобы задать вершины умножают соединенный или разделяют полигоны, разделяют координаты для отличных циклов с NaN
. Дополнительно для умножают соединенные полигоны, необходимо ориентировать вершины для внешних и внутренних циклов в противоположных направлениях.
Полигон не может самопересекаться и умножаться соединенный из-за неоднозначности, сопоставленной с ориентациями цикла и самопересечениями.
Типы данных: double | single
yv
y-координаты вершин полигонаy-координаты вершин полигона, заданных как вектор.
Размер yv
должен совпадать с размером xv
.
Чтобы задать вершины умножают соединенный или разделяют полигоны, разделяют координаты для отличных циклов с NaN
. Дополнительно для умножают соединенные полигоны, необходимо ориентировать вершины для внешних и внутренних циклов в противоположных направлениях.
Полигон не может самопересекаться и умножаться соединенный из-за неоднозначности, сопоставленной с ориентациями цикла и самопересечениями.
Типы данных: double | single
\in
Индикатор для точек внутри или в напряжении из области полигонаИндикатор для точек внутри или на краю области полигона, возвращенной как логический массив. in
одного размера как xq
и yq
.
Логический 1
(true
) указывает, что соответствующая точка запроса в многоугольной области или на краю контура полигона.
Логический 0
(false
) указывает, что соответствующая точка запроса за пределами многоугольной области.
Поэтому можно использовать in
, чтобы индексировать в xq
и yq
, чтобы идентифицировать точки запроса интереса.
xq(in) , yq(in) | Точки запроса внутри или на краю области полигона |
xq(~in) , yq(~in) | Точки запроса за пределами многоугольной области |
on
— Индикатор для точек, в напряжении из области полигонаИндикатор для точек на краю области полигона, возвращенной как логический массив. on
одного размера как xq
и yq
.
Логический 1
(true
) указывает, что соответствующая точка запроса находится на контуре полигона.
Логический 0
(false
) указывает, что соответствующая точка запроса внутри или снаружи контура полигона.
Поэтому можно использовать on
, и in
, чтобы индексировать в xq
и yq
идентифицирует точки запроса интереса.
xq(on) , yq(on) | Точки запроса на контуре полигона |
xq(~on) , yq(~on) | Точки запроса внутри или снаружи контура полигона |
xq(in&~on) , yq(in&~on) | Точки запроса строго в многоугольной области |
Указания и ограничения по применению:
Поддерживает с одинарной точностью и с двойной точностью вводит, но использует с двойной точностью арифметику, даже если все входные параметры с одинарной точностью.
Эта функция полностью поддерживает массивы GPU. Для получения дополнительной информации смотрите функции MATLAB Выполнения на GPU (Parallel Computing Toolbox).
1. Если смысл перевода понятен, то лучше оставьте как есть и не придирайтесь к словам, синонимам и тому подобному. О вкусах не спорим.
2. Не дополняйте перевод комментариями “от себя”. В исправлении не должно появляться дополнительных смыслов и комментариев, отсутствующих в оригинале. Такие правки не получится интегрировать в алгоритме автоматического перевода.
3. Сохраняйте структуру оригинального текста - например, не разбивайте одно предложение на два.
4. Не имеет смысла однотипное исправление перевода какого-то термина во всех предложениях. Исправляйте только в одном месте. Когда Вашу правку одобрят, это исправление будет алгоритмически распространено и на другие части документации.
5. По иным вопросам, например если надо исправить заблокированное для перевода слово, обратитесь к редакторам через форму технической поддержки.