exponenta event banner

xor

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

Описание

пример

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

figure

Вычислите и постройте график исключительного ИЛИ 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.

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

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

В исключающем ИЛИ есть две границы, разделенные строкой NaN значения в Vertices собственность. Например, рассмотрим первую границу в массиве. Первая и последняя вершины исключающего ИЛИ возникли в poly1, так как соответствующие значения в shapeID равны 1. Эти вершины являются первой и четвертой вершинами в свойстве poly1.Vertices, соответственно, поскольку соответствующие значения в vertexID равны 1 и 4. Аналогично, вторая и третья вершины исключающего ИЛИ возникли в 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-на-N или N-на-M в зависимости от ориентации каждого входного вектора. Дополнительные сведения о совместимых размерах массива см. в разделе Совместимые размеры массива для основных операций.

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

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

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

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

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

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

См. также

|

Представлен в R2017b