subtract

Различие двух polyshape объекты

Описание

пример

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

пример

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

shapeID элементы идентифицируют ли соответствующая вершина в polyout порожденный в poly1poly2 , или был создан из различия. vertexID сопоставляет вершины polyout к вершинам poly1poly2 , или различие.

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

Примеры

свернуть все

Создайте и постройте два многоугольника poly1 и poly2 это частично перекрывается.

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

Вычтите poly2 от poly1. Получившимся многоугольником является poly1 минус любая часть poly2 это перекрывается с poly1.

polyout1 = subtract(poly1,poly2)
polyout1 = 
  polyshape with properties:

      Vertices: [8x2 double]
    NumRegions: 1
      NumHoles: 0

plot(polyout1)

Теперь вычтите эти два многоугольника в противоположном порядке, то есть, вычтите poly1 от poly2. Получившимся многоугольником является poly2 минус любая часть poly1 это перекрывает poly2.

polyout2 = subtract(poly2,poly1)
polyout2 = 
  polyshape with properties:

      Vertices: [4x2 double]
    NumRegions: 1
      NumHoles: 0

plot(polyout2)
xlim([-0.2 1.4]);
ylim([-0.2 1.2]);

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

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

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

         0    1.0000    1.0000    1.0000
    0.5000    1.0000         0         0
    0.5000    0.5000    2.0000    4.0000
    1.0000    0.5000         0         0
    1.0000         0    1.0000    3.0000
         0         0    1.0000    4.0000

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

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

свернуть все

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

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

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

  • false — Удалите коллинеарные точки так, чтобы выход 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. subtract функционируйте только поддерживает этот выходной аргумент когда вход polyshape объекты являются скаляром.

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

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

| | |

Введенный в R2017b