polyshape

Описание

polyshape функция создает многоугольник, заданный 2D вершинами, и возвращает polyshape объект со свойствами, описывающими его вершины, твердые области и отверстия. Например, pgon = polyshape([0 0 1 1],[1 0 0 1]) создает сплошной квадрат, заданный этими четырьмя точками (0,1), (0,0), (1,0), и (1,1).

>> pgon = polyshape([0 0 1 1],[1 0 0 1])
pgon = 

  polyshape with properties:

      Vertices: [4×2 double]
    NumRegions: 1
      NumHoles: 0
>> plot(pgon)

Создание

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

Если вы хотите создать правильный многоугольник, можно также использовать nsidedpoly функция. nsidedpoly позволяет вам опционально задать параметры, такие как центральная точка и длина стороны многоугольника.

Описание

pgon = polyshape() создает пустой polyshape объект.

пример

pgon = polyshape(x,y) создает polyshape от 2D вершин, заданных вектором из x - координат и вектора из соответствующего y - координаты. x и y должна быть та же длина по крайней мере с тремя элементами.

пример

pgon = polyshape(P) создает polyshape от 2D вершин, заданных в N-by-2 матричный P, где N является количеством вершин. Первый столбец P задает x - координаты, и второй столбец задает y- координаты.

пример

pgon = polyshape(X,Y), где X и Y 1 M массивами ячеек векторов для x - и y- координаты, создает многоугольник, состоящий из контуров M. Каждый вектор в X должен иметь ту же длину как соответствующий вектор в Y, но количество вершин может варьироваться между контурами.

пример

pgon = polyshape(___,Name,Value) задает дополнительные параметры для создания polyshape объект для любого из предыдущих синтаксисов.

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

развернуть все

x- вершин многоугольника в виде вектора. Можно представлять координаты нескольких контуров за один раз путем размещения NaN между каждым контуром. Например, pgon = polyshape([0 0 1 NaN 1 5 5],[1 0 0 NaN 5 5 1]) создает polyshape составленный из двух твердых треугольников.

Числовые входные координаты, которые не имеют типа double автоматически преобразованы, чтобы ввести double.

Типы данных: double | single | int8 | int16 | int32 | int64 | uint8 | uint16 | uint32 | uint64

y- вершин многоугольника в виде вектора. Можно представлять координаты нескольких контуров за один раз путем размещения NaN между каждым контуром. Например, pgon = polyshape([0 0 1 NaN 1 5 5],[1 0 0 NaN 5 5 1]) создает polyshape составленный из двух твердых треугольников.

Числовые входные координаты, которые не имеют типа double автоматически преобразованы, чтобы ввести double.

Типы данных: double | single | int8 | int16 | int32 | int64 | uint8 | uint16 | uint32 | uint64

2D вершины многоугольника в виде матрицы с 2 столбцами. Первый столбец P содержит x - координаты вершин, и второй столбец содержит y - координаты. P должен иметь по крайней мере 3 строки.

Можно представлять координаты нескольких контуров за один раз путем размещения NaN между каждым контуром. Например, pgon = polyshape([1 0; 0 0; 0 1; NaN NaN; 1 5; 5 5; 5 1]) создает polyshape составленный из двух твердых треугольников.

Числовые входные координаты, которые не имеют типа double автоматически преобразованы, чтобы ввести double.

Типы данных: double | single | int8 | int16 | int32 | int64 | uint8 | uint16 | uint32 | uint64

x- контуров M в виде массива ячеек векторов. Длина каждого вектора может варьироваться, но должна совпадать с длиной соответствующего вектора y.

Числовые входные координаты, которые не имеют типа double автоматически преобразованы, чтобы ввести double.

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

y- контуров M в виде массива ячеек векторов. Длина каждого вектора может варьироваться, но должна совпадать с длиной соответствующего вектора y.

Числовые входные координаты, которые не имеют типа double автоматически преобразованы, чтобы ввести double.

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

Аргументы в виде пар имя-значение

Задайте дополнительные разделенные запятой пары Name,Value аргументы. Name имя аргумента и Value соответствующее значение. Name должен появиться в одинарных кавычках (' '). Можно задать имя и аргументы пары значения в любом порядке как Name1,Value1,Name2,Value2.

Пример: pgon = polyshape(P,'SolidBoundaryOrientation','ccw')

Граничная ориентация в виде разделенной запятой пары, состоящей из 'SolidBoundaryOrientation' и одно из этих значений:

  • 'auto' — Автоматически определите граничный тип на основе граничного вложения.

  • 'cw' — Обработайте по часовой стрелке ориентацию вершины как твердый контур.

  • 'ccw' — Обработайте против часовой стрелки ориентацию вершины как твердый контур.

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

Изменение вершины в виде разделенной запятой пары, состоящей из 'Simplify' и одно из следующего:

  • true — Измените вершины многоугольника, чтобы произвести четко определенный многоугольник, когда входные вершины произведут пересечения или неподходящее вложение.

  • false — Не изменяйте входные вершины независимо от пересечений или неподходящего вложения. Вычисление с неточно указанными многоугольниками может привести к неточным или неожиданным результатам.

Типы данных: логический

Коллинеарные вершины в виде разделенной запятой пары, состоящей из 'KeepCollinearPoints' и одно из следующего:

  • false — Удалите коллинеарные точки при создании polyshape так, чтобы это содержало наименьшее количество вершин, необходимых, чтобы задать контуры.

  • true — Сохраните все коллинеарные точки как вершины при создании polyshape.

После создания polyshape, значение 'KeepCollinearPoints' автоматически перенесен, когда вы используете addboundary или simplify функции объекта.

Типы данных: логический

Свойства

развернуть все

2D вершины многоугольника в виде матрицы с 2 столбцами. Матрица вершины содержит вершины для каждого контура многоугольника. NaN значения разделяют набор каждого контура вершин.

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

Это свойство доступно только для чтения.

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

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

Это свойство доступно только для чтения.

Количество отверстий в многоугольнике в виде скалярного целого числа.

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

Функции объекта

развернуть все

addboundaryДобавьте polyshape контур
polybufferСоздайте буфер вокруг точек, линий или polyshape объекты
rmboundaryУдалите polyshape контур
rmholesУдалите отверстия в polyshape
rmsliversУдалите polyshape граничные выбросы
rotateВращайте polyshape
scaleМасштабируйте polyshape
simplifyУпростите polyshape контуры
sortboundariesСортировка polyshape контуры
sortregionsСортировка polyshape области
translateПереведите polyshape
boundaryКоординаты вершины polyshape контур
holesПреобразуйте polyshape контуры отверстия к массиву polyshape объекты
isholeОпределите если polyshape контур является отверстием
isinteriorТочки запроса в polyshape
issimplifiedОпределите если polyshape четко определено
nearestvertexЗапросите самый близкий polyshape вершина
numboundariesКоличество polyshape контуры
numsidesКоличество polyshape стороны
overlapsОпределите ли polyshape перекрытие объектов
plotПостройте polyshape
regionsДоступ к polyshape области
areaОбласть polyshape
boundingboxОграничительная рамка polyshape
centroidЦентроид polyshape
convhullВыпуклая оболочка polyshape
perimeterПериметр polyshape
triangulationТреугольный polyshape
turningdistВычислите превращение расстояния между polyshape объекты
intersectПересечение polyshape объекты
subtractРазличие двух polyshape объекты
unionОбъединение polyshape объекты
xorИсключающее ИЛИ двух polyshape объекты

Примеры

свернуть все

Создайте и постройте многоугольник, составленный из четырех точек, и вычислите его область, периметр и центроидные координаты.

pgon = polyshape([0 0 1 3], [0 3 3 0]);
plot(pgon)

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

A = area(pgon)
A = 6
P = perimeter(pgon)
P = 10.6056
[Cx Cy] = centroid(pgon)
Cx = 1.0833
Cy = 1.2500

Анализируйте многоугольник с пересекающимися контурами.

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

P = [0 0; 1 1; 1 0; 0 1; 0 0];
pgon = polyshape(P)
Warning: Polyshape has duplicate vertices, intersections, or other inconsistencies that may produce inaccurate or unexpected results. Input data has been modified to create a well-defined polyshape.
pgon = 
  polyshape with properties:

      Vertices: [7x2 double]
    NumRegions: 2
      NumHoles: 0

Постройте многоугольник и вычислите его область.

plot(pgon)

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

A = area(pgon)
A = 0.5000

Если вы не упрощаете исходные входные вершины, области двух треугольных областей многоугольника уравновешивают друг друга.

pgon2 = polyshape(P,'Simplify',false)
pgon2 = 
  polyshape with properties:

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

A2 = area(pgon2)
A2 = 0

Анализируйте многоугольники с вложенными контурами.

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

t = 0.05:0.5:2*pi;
x1 = cos(t);
y1 = sin(t);
x2 = 0.5*cos(t);
y2 = 0.5*sin(t);
pgon = polyshape({x1,x2},{y1,y2})
pgon = 
  polyshape with properties:

      Vertices: [27x2 double]
    NumRegions: 1
      NumHoles: 1

plot(pgon)

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

Используйте addboundary функция, чтобы создать второй многоугольник, который добавляет одну треть, внешнюю границу к pgon.

x3 = 2*cos(t);
y3 = 2*sin(t);
pgon2 = addboundary(pgon,x3,y3)
pgon2 = 
  polyshape with properties:

      Vertices: [41x2 double]
    NumRegions: 2
      NumHoles: 1

plot(pgon2)

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

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

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

|

Введенный в R2017b