Задайте операции для полигональных областей
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