exponenta event banner

вычесть

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

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

См. также

| | |

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