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