Задайте операции для полигональных областей
polybool
не рекомендуется. Использовать polyshape
вместо этого.
Как заменить вызовы на polybool
, создать polyshape
объекты, чтобы представлять фигуры, вызывают соответствующую polyshape
функция объекта для эквивалентной логической операции, а затем вызов polyshape
boundary
функция объекта. Для примера этот вызов на polybool
задает операцию объединения как первый аргумент. [Cx,Cy] = polybool('union',Ax,Ay,Bx,By)
polyshape
объекты для каждой формы, а затем используйте union
функция объекта, связанная с polyshape
объект. polyshape
поддерживает логические операции, поддерживаемые polybool
: объединение, пересечение, вычитание и исключающее ИЛИ. Используйте polyshape
boundary
функция объекта для возврата Cx
и Cy
. Посмотрите polyshape
полный список функций объекта, включая plot
. A = polyshape(Ax,Ay,'Simplify',false);
B = polyshape(Bx,By,'Simplify',false);
C = union(A,B);
[Cx,Cy] = boundary(C);
polybool
и выход вызова на boundary
, потому что нет единого правильного ответа. (Даже в простом однооборотном многоугольнике вершины можно переместить циклически, не влияя на базовую геометрию.) В сложение, если геометрии входов не идеально чисты (свободны от самопересечений и т.д.), то polyshape
union
операция может вносить небольшие изменения, которые не обязательно выполняются в polybool
.
[
выполняет операцию набора многоугольников, идентифицированную x
,y
] =
polybool(flag
,x1
,y1
,x2
,y2
)flag
. Результат выводится с использованием того же формата, что и вход. Географические данные, охватывающие полюс, не могут использоваться непосредственно. Использовать flatearthpoly
для преобразования многоугольников, содержащих полюс, в Декартовы координаты.
Большинство функций Mapping Toolbox™ соответствуют соглашению о том, что отдельные контуры с вершинами по часовой стрелке являются внешними контурами, а отдельные контуры с вершинами против часовой стрелки являются внутренними контурами. Хотя и polybool
функция игнорирует порядок вершин, соблюдайте это соглашение при создании контуров, чтобы гарантировать согласованность с другими функциями.
Числовые проблемы могут возникнуть, когда многоугольники имеют большое смещение от источника. Чтобы избежать этой проблемы, перед выполнением операции переведите координаты в местоположение ближе к источнику. Затем отмените перевод после завершения операции. Для примера:
[x,y] = polybool(flag,x1-xt,y1-yt,x2-xt,y2-yt);
x = x+xt;
y = y+yt;
bufferm
| flatearthpoly
| ispolycw
| poly2ccw
| poly2cw
| poly2fv
| polyjoin
| polyshape
| polysplit