intersect

Пересечение polyshape объекты

Описание

пример

polyout = intersect(poly1,poly2) возвращает polyshape возразите, чьи области являются геометрическим пересечением двух polyshape объекты. Пересечение содержит области poly1 и poly2 то перекрытие. poly1 и poly2 должен иметь совместимые размеры массивов.

пример

polyout = intersect(polyvec) возвращает polyshape возразите, чьи области являются пересечением всего polyshape объекты в векторном polyvec. Пересечение содержит области где весь polyshape объекты в polyvec перекрытие.

пример

[polyout,shapeID,vertexID] = intersect(poly1,poly2) также возвращает информацию об отображении вершины в вершины в polyout к вершинам в poly1 и poly2. intersect функционируйте только поддерживает этот синтаксис когда poly1 и poly2 скалярный polyshape объекты.

shapeID элементы идентифицируют ли соответствующая вершина в polyout порожденный в poly1poly2 , или был создан из пересечения. vertexID сопоставляет вершины polyout к вершинам poly1poly2 , или пересечение.

[polyout,shapeID,vertexID] = intersect(polyvec) возвращает информацию об отображении вершины в polyout к каждому элементу вектора polyshape объекты polyvec.

___ = intersect(___,'KeepCollinearPoints',TF) задает, сохранить ли или удалить коллинеарные точки в polyout для любого из предыдущих синтаксисов.

пример

[in,out] = intersect(poly1,lineseg) возвращает линейные сегменты lineseg это внутри и снаружи poly1. Матричный lineseg имеет два столбца. Первый столбец задает x - координаты линейных сегментов и второго столбца задают соответствующий y - координаты.

intersect поддержки этот синтаксис только, когда poly1 скалярный polyshape и lineseg не содержит самопересечений.

Примеры

свернуть все

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

poly1 = polyshape([0 0 1 1],[1 0 0 1]);
poly2 = polyshape([0.75 1.25 1.25 0.75],[0.25 0.25 0.75 0.75]);
plot(poly1)
hold on
plot(poly2)

figure

Вычислите и постройте пересечение poly1 и poly2.

polyout = intersect(poly1,poly2)
polyout = 
  polyshape with properties:

      Vertices: [4x2 double]
    NumRegions: 1
      NumHoles: 0

plot(polyout)
xlim([-0.2 1.4]);
ylim([-0.2 1.2]);

Создайте вектор, содержащий два многоугольника.

polyarray1 = polyshape([0 0 1 1],[1 0 0 1]);
polyarray2 = polyshape([0.75 1.25 1.25 0.75],[0.25 0.25 0.75 0.75]);
poly1 = [polyarray1 polyarray2]
poly1 = 
  1x2 polyshape array with properties:

    Vertices
    NumRegions
    NumHoles

plot(poly1(1))
hold on
plot(poly1(2))

figure

Вычислите пересечение элементов poly1.

polyout = intersect(poly1)
polyout = 
  polyshape with properties:

      Vertices: [4x2 double]
    NumRegions: 1
      NumHoles: 0

plot(polyout)
xlim([-0.2 1.4]);
ylim([-0.2 1.2]);

Создайте два многоугольника и вычислите их пересечение. Отобразите координаты вершины пересечения и соответствующей информации об отображении вершины.

poly1 = polyshape([0 0 1 1],[1 0 0 1]);
poly2 = polyshape([0.75 1.25 1.25 0.75],[0.25 0.25 0.75 0.75]);
[polyout,shapeID,vertexID] = intersect(poly1,poly2);

[polyout.Vertices shapeID vertexID]
ans = 4×4

    0.7500    0.2500    2.0000    1.0000
    0.7500    0.7500    2.0000    2.0000
    1.0000    0.7500         0         0
    1.0000    0.2500         0         0

Первые две вершины пересечения порождаются в poly2, начиная с соответствующих значений в shapeID 2. Эти вершины являются первыми и вторыми вершинами в свойстве poly2.Vertices, соответственно, начиная с их соответствующих значений в vertexID 1 и 2. Последние две вершины polyout были созданы из пересечения потому что соответствующие значения в shapeID и vertexID 0.

Создайте прямоугольный многоугольник и линейный сегмент.

poly1 = polyshape([0 0 1 1],[1 0 0 1]);
lineseg = [0.5 0.5; 1.5 1.5];

Вычислите пересечение многоугольника с линейным сегментом и определите, который разделы линейного сегмента внутри или снаружи многоугольника.

[in,out] = intersect(poly1,lineseg);
plot(poly1)
hold on
plot(in(:,1),in(:,2),'b',out(:,1),out(:,2),'r')
legend('Polygon','Inside','Outside','Location','NorthWest')

Входные параметры

свернуть все

Первый вход polyshape, заданный как скаляр, вектор, матрица или многомерный массив.

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

Второй вход polyshape, заданный как скаляр, вектор, матрица или многомерный массив.

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

polyshape вектор.

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

Координаты линейного сегмента, заданные как матрица 2D столбца. Первый столбец задает x - координаты линейных сегментов и второго столбца задают y - координаты. lineseg должен иметь по крайней мере две строки и не содержать самопересечения.

Типы данных: double | single | int8 | int16 | int32 | int64 | uint8 | uint16 | uint32 | uint64

Коллинеарный индикатор вершин, заданный как false или true:

  • false — Удалите коллинеарные точки так, чтобы выход polyshape содержит наименьшее количество вершин, необходимых, чтобы задать контуры.

  • true — Сохраните все коллинеарные точки как вершины.

Когда 'KeepCollinearPoints' параметр не задан, его значение присвоено согласно значениям, используемым при создании входа polyshape объекты:

  • Если значением был true для каждого входа polyshape когда они были созданы, затем значение для выхода polyshape установлен в true.

  • Если значением был false для каждого входа polyshape когда они были созданы, затем значение для выхода polyshape установлен в false.

  • Если значения для входа polyshape объекты не соответствуют, затем значение для выхода polyshape установлен в false.

Типы данных: логический

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

свернуть все

Выведите polyshape, возвращенный как скаляр, вектор, матрица или многомерный массив.

  • Если вы вводите два polyshape аргументы, затем у них должны быть совместимые размеры. Например, если два входа polyshape векторы имеют различные длины M и N, затем у них должны быть различные ориентации (нужно быть вектором-строкой, и нужно быть вектор-столбцом). polyout затем M-by-N или N-by-M в зависимости от ориентации каждого входного вектора. Для получения дополнительной информации о совместимых размерах массивов смотрите Совместимые Размеры Массивов для Основных Операций.

  • Если вы предоставляете одному входному параметру polyvec, затем polyout скалярный polyshape объект.

Сформируйте ID, возвращенный как вектор-столбец, элементы которого каждый представляет источник вершины в пересечении.

  • Длина shapeID равно количеству строк в Vertices свойство выхода polyshape.

  • Элементы shapeID зависьте от количества входных параметров:

    • Если вы предоставляете двум входным параметрам poly1 и poly2, затем они должны быть скалярным polyshape объекты. Значение элемента в shapeID 0 когда соответствующая вершина выхода polyshape был создан пересечением. Элемент равняется 1 когда соответствующая вершина, порожденная из poly1, и 2, когда это произошло из poly2.

    • Если вы предоставляете одному входному параметру polyvec это - вектор polyshape объекты, затем shapeID содержит индекс элемента polyvec из которого соответствующая выходная порожденная вершина. Значение элемента 0, когда соответствующая вершина была создана пересечением.

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

ID вершины, возвращенный как вектор-столбец, элементы которого сопоставляют вершины в выходе polyshape к вершинам в polyshape из источника. Элементы vertexID содержите номера строк соответствующих вершин в Vertices свойство входа polyshape. Элемент 0 когда соответствующая вершина выхода polyshape был создан пересечением.

Длина vertexID равно количеству строк в Vertices свойство выхода polyshape. Если вы обеспечиваете два входа polyshape объекты, затем intersect только поддерживают этот выходной аргумент, если они - скаляр.

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

В координатах линейного сегмента, возвращенных как матрица 2D столбца. Первый столбец in содержит x - координаты линейных сегментов во входе polyshape, и второй столбец содержит соответствующий y - координаты.

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

Вне координат линейного сегмента, возвращенных как матрица 2D столбца. Первый столбец out содержит x - координаты линейных сегментов за пределами входа polyshape, и второй столбец содержит соответствующий y - координаты.

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

Смотрите также

|

Введенный в R2017b