Точки расположены внутри или в напряжении из многоугольной области
Задайте пятиугольник и набор точек. Затем определите, какие точки лежат внутри (или на ребре) пятиугольника.
Задайте координаты 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
ложь
) указывает, что соответствующая точка запроса находится вне многоугольной области.
Поэтому можно использовать in
индексировать в xq
и yq
идентифицировать точки запроса интереса.
xq(in) , yq(in) | Точки запроса внутри или на ребре области многоугольника |
xq(~in) , yq(~in) | Точки запроса за пределами многоугольной области |
on
— Индикатор для точек, в напряжении из области многоугольникаИндикатор для точек на ребре области многоугольника, возвращенной как логический массив. on
одного размера с xq
и yq
.
Логический 1
TRUE
) указывает, что соответствующая точка запроса находится на контуре многоугольника.
Логический 0
ложь
) указывает, что соответствующая точка запроса внутри или снаружи контура многоугольника.
Поэтому можно использовать on
и in
индексировать в xq
и yq
идентифицируйте точки запроса интереса.
xq(on) , yq(on) | Точки запроса на контуре многоугольника |
xq(~on) , yq(~on) | Точки запроса внутри или снаружи контура многоугольника |
xq(in&~on) , yq(in&~on) | Точки запроса строго в многоугольной области |
Указания и ограничения по применению:
Поддерживает входные параметры с двойной точностью и с одинарной точностью, но использует арифметику с двойной точностью, даже если все входные параметры с одинарной точностью.
backgroundPool
или ускорьте код с Parallel Computing Toolbox™ ThreadPool
.Эта функция полностью поддерживает основанные на потоке среды. Для получения дополнительной информации смотрите функции MATLAB Запуска в Основанной на потоке Среде.
Эта функция полностью поддерживает массивы графического процессора. Для получения дополнительной информации смотрите функции MATLAB Запуска на графическом процессоре (Parallel Computing Toolbox).
Эта функция полностью поддерживает распределенные массивы. Для получения дополнительной информации смотрите функции MATLAB Запуска с Распределенными Массивами (Parallel Computing Toolbox).
У вас есть модифицированная версия этого примера. Вы хотите открыть этот пример со своими редактированиями?
1. Если смысл перевода понятен, то лучше оставьте как есть и не придирайтесь к словам, синонимам и тому подобному. О вкусах не спорим.
2. Не дополняйте перевод комментариями “от себя”. В исправлении не должно появляться дополнительных смыслов и комментариев, отсутствующих в оригинале. Такие правки не получится интегрировать в алгоритме автоматического перевода.
3. Сохраняйте структуру оригинального текста - например, не разбивайте одно предложение на два.
4. Не имеет смысла однотипное исправление перевода какого-то термина во всех предложениях. Исправляйте только в одном месте. Когда Вашу правку одобрят, это исправление будет алгоритмически распространено и на другие части документации.
5. По иным вопросам, например если надо исправить заблокированное для перевода слово, обратитесь к редакторам через форму технической поддержки.