xor

Эксклюзивное ИЛИ двух polyshape объекты

Описание

пример

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

пример

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

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

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

Примеры

свернуть все

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

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

Вычислите и постройте график эксклюзивного OR poly1 и poly2.

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

      Vertices: [13x2 double]
    NumRegions: 2
      NumHoles: 0

plot(polyout)

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

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

poly1 = polyshape([0 0 1 1],[1 0 0 1]);
poly2 = translate(poly1,[0.5 0]);
[polyout,shapeID,vertexID] = xor(poly1,poly2);
plot(polyout)

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

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

         0    1.0000    1.0000    1.0000
    0.5000    1.0000    2.0000    1.0000
    0.5000         0    2.0000    4.0000
         0         0    1.0000    4.0000
       NaN       NaN       NaN       NaN
    1.0000    1.0000    1.0000    2.0000
    1.5000    1.0000    2.0000    2.0000
    1.5000         0    2.0000    3.0000
    1.0000         0    1.0000    3.0000

В исключающем OR есть два контуров, разделенные строкой NaN значения в Vertices свойство. Для примера рассмотрим первые контуры в массиве. Первая и последняя вершины исключающего OR произошли в poly1, так как соответствующие значения в shapeID 1. Эти вершины являются первой и четвертой вершинами свойства poly1.Vertices, соответственно, так как соответствующие значения в vertexID 1 и 4. Точно так же вторая и третья вершины исключающего OR произошли в poly2и они также являются первой и четвертой вершинами в свойстве poly2.Vertices, соответственно.

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

свернуть все

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

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

Индикатор коллинеарных вершин, заданный как 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 в зависимости от ориентации каждого входного вектора. Для получения дополнительной информации о совместимых размерах массивов см. «Совместимые размеры массивов для основных операций».

Идентификатор формы, возвращенный как вектором-столбцом, элементы которого каждый представляют источнику вершины в исключающем ИЛИ. Значение элемента в shapeID 0, когда соответствующая вершина выхода polyshape был создан эксклюзивным ОР. Элемент равен 1, когда соответствующая вершина произошла из poly1, и 2, когда она произошла от poly2.

Длина shapeID равно количеству строк в Vertices свойство выхода polyshape. The xor функция поддерживает этот выходной аргумент только в том случае, если вход polyshape объекты скаляром.

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

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

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

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

См. также

|

Введенный в R2017b