exponenta event banner

полиформа

Описание

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 - координаты М границ, заданные в виде клеточного массива векторов. Длина каждого вектора может изменяться, но должна соответствовать длине соответствующего вектора y.

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

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

y - координаты М границ, определяемые как клеточный массив векторов. Длина каждого вектора может изменяться, но должна соответствовать длине соответствующего вектора 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