exponenta event banner

пересечься

Пересечение 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 возникла в 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. Эти вершины являются первой и второй вершинами в свойстве 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-на-N или N-на-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