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