xor

Исключающее ИЛИ двух объектов polyshape

Синтаксис

polyout = xor(poly1,poly2)
[polyout,shapeID,vertexID] = xor(poly1,poly2)
___ = xor(poly1,poly2,'KeepCollinearPoints',TF)

Описание

пример

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

пример

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

Элементы shapeID идентифицируют, была ли соответствующая вершина в polyout, порожденном в poly1, poly2, или, создана из исключающего ИЛИ. 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

Вычислите и постройте исключающее ИЛИ poly1 и poly2.

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

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

plot(polyout)

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

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

[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

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

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

свернуть все

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

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

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

  • ложь Удалите коллинеарные точки так, чтобы вывод 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 в зависимости от ориентации каждого входного вектора. Для получения дополнительной информации о совместимых размерах массивов смотрите Совместимые Размеры Массивов для Основных Операций.

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

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

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

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

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

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

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

|

Введенный в R2017b