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