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 на 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

Была ли эта тема полезной?