subtract

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

Описание

пример

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

пример

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

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

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

figure

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

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

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

plot(polyout1)

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

Теперь вычесть два многоугольника в противоположном порядке, то есть вычесть 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]);

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.5]);
[polyout,shapeID,vertexID] = subtract(poly1,poly2);
plot(polyout)
axis equal

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

[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.

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

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

См. также

| | |

Введенный в R2017b