полиформа

Описание

Функция 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()
pgon = polyshape(x,y)
pgon = polyshape(P)
pgon = polyshape(X,Y)
pgon = polyshape(___,Name,Value)

Описание

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) — соответствующее значение. Имя должно находиться внутри одинарных кавычек (' '). Можно задать имя и аргументы пары значения в любом порядке как Name1,Value1,Name2,Value2.

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

Свойства

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

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

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

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

Количество областей, составляющих полигон, заданный как скалярное целое число.

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

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

Количество дыр в полигоне, заданном как скалярное целое число.

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

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

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

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

Примеры

свернуть все

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

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

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)

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)

Используйте функцию 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)

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

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

|

Введенный в R2017b