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. The intersect функция поддерживает этот синтаксис только тогда, когда poly1 и poly2 являются скалярными polyshape объекты.

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

[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 contains an axes. The axes contains 2 objects of type polygon.

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]);

Figure contains an axes. The axes contains an object of type polygon.

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

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 contains an axes. The axes contains 2 objects of type polygon.

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]);

Figure contains an axes. The axes contains an object of type polygon.

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

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.These вершины являются первой и второй вершинами в свойстве 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')

Figure contains an axes. The axes contains 3 objects of type polygon, line. These objects represent Polygon, Inside, Outside.

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

свернуть все

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

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

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

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

polyshape вектор.

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

Координаты сегмента линии, заданные как двухколоночная матрица. Первый столбец определяет 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.

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

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

свернуть все

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

См. также

|

Введенный в R2017b