полиформа

Описание

Функция 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 вершин, заданных в матричном P N-2, где 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.

Типы данных: удвойтесь | единственный | 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.

Типы данных: удвойтесь | единственный | 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.

Типы данных: удвойтесь | единственный | int8 | int16 | int32 | int64 | uint8 | uint16 | uint32 | uint64

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

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

Типы данных: ячейка

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

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

Типы данных: ячейка

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

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

Пример: pgon = полиформа (P, 'SolidBoundaryOrientation', 'против часовой стрелки')

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

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

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

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

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

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

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

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

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

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

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

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

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

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

Свойства

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

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

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

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

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

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

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

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

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

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

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

addboundaryДобавьте контур полиформы
полибуферБуферная полиформа
rmboundaryУдалите контур полиформы
rmholesУдалите дыры в полиформе
rmsliversУдалите выбросы контура полиформы
вращениеВращайте полиформу
шкалаМасштабируйте полиформу
упрощениеУпростите контуры полиформы
sortboundariesСортировка контуров полиформы
sortregionsСортировка областей полиформы
переводПереведите полиформу
контурКоординаты вершины контура полиформы
дырыПреобразуйте контуры дыры полиформы в массив полиобъектов фигуры
isholeОпределите, является ли контур полиформы дырой
isInteriorТочки запроса в полиформе
issimplifiedОпределите, четко определена ли полиформа
nearestvertexЗапросите самую близкую вершину полиформы
numboundariesКоличество контуров полиформы
numsidesКоличество сторон полиформы
overlapsОпределите, накладываются ли полиобъекты фигуры
графикПостройте график полиформы
областиДоступ к областям полиформы
областьОбласть полиформы
boundingboxОграничительная рамка полиформы
центроидЦентроид полиформы
convhullВыпуклая оболочка полиформы
периметрПериметр полиформы
триангуляцияТреугольная полиформа
turningdistВычислите превращение расстояния между полиобъектами фигуры
пересечениеПересечение полиобъектов фигуры
вычитаниеРазличие двух полиобъектов фигуры
объединениеОбъединение полиобъектов фигуры
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

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

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

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

Была ли эта тема полезной?