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Добавьте контур полиформы
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