Операции присвоения на многоугольных областях
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)
[
выполняет операцию присвоения полигона, идентифицированную 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