polyshape

Описание

The polyshape функция создает многоугольник, заданную 2-D вершинами, и возвращает 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 из 2-D вершин, заданных вектором x -кординатов и вектором соответствующих y -кординатов. x и y должна быть одинаковой длины по крайней мере с тремя элементами.

пример

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

пример

pgon = polyshape(X,Y), где X и Y являются 1-by- 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

2-D вершины многоугольника, заданные как матрица с 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 - Не изменяйте входные вершины независимо от пересечений или неправильного вложения. Вычисления с плохо заданными многоугольниками могут привести к неточным или неожиданным результатам.

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

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

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

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

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

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

Свойства

расширить все

2-D вершины многоугольника, заданные как матрица с 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. The axes 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. The axes 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. The axes 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. The axes contains an object of type polygon.

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

См. также

|

Введенный в R2017b