symm_difference_closed_polygons_xldsymm_difference_closed_polygons_xldSymmDifferenceClosedPolygonsXldSymmDifferenceClosedPolygonsXld (Operator)

Name

symm_difference_closed_polygons_xldsymm_difference_closed_polygons_xldSymmDifferenceClosedPolygonsXldSymmDifferenceClosedPolygonsXld — Compute the symmetric difference of closed polygons.

Signature

symm_difference_closed_polygons_xld(Polygons1, Polygons2 : PolygonsDifference : : )

Herror symm_difference_closed_polygons_xld(const Hobject Polygons1, const Hobject Polygons2, Hobject* PolygonsDifference)

Herror T_symm_difference_closed_polygons_xld(const Hobject Polygons1, const Hobject Polygons2, Hobject* PolygonsDifference)

void SymmDifferenceClosedPolygonsXld(const HObject& Polygons1, const HObject& Polygons2, HObject* PolygonsDifference)

HXLDPoly HXLDPoly::SymmDifferenceClosedPolygonsXld(const HXLDPoly& Polygons2) const

static void HOperatorSet.SymmDifferenceClosedPolygonsXld(HObject polygons1, HObject polygons2, out HObject polygonsDifference)

HXLDPoly HXLDPoly.SymmDifferenceClosedPolygonsXld(HXLDPoly polygons2)

Description

The operator symm_difference_closed_polygons_xldsymm_difference_closed_polygons_xldSymmDifferenceClosedPolygonsXldSymmDifferenceClosedPolygonsXldSymmDifferenceClosedPolygonsXld calculates the symmetric difference of the regions enclosed by the polygons Polygons1Polygons1Polygons1Polygons1polygons1 and Polygons2Polygons2Polygons2Polygons2polygons2. The boundaries of this symmetric difference are returned in PolygonsDifferencePolygonsDifferencePolygonsDifferencePolygonsDifferencepolygonsDifference.

If the individual input polygons are not closed, they are closed automatically by connecting their start and end points.

Internally, first, the regions enclosed by each set of polygons (Polygons1Polygons1Polygons1Polygons1polygons1 and Polygons2Polygons2Polygons2Polygons2polygons2, respectively) are determined as described below. Then, the symmetric difference of these two regions is calculated.

In the following, the two sets of input polygons are referred to as boundary sets. A boundary set consists of an arbitrary number of boundaries (the individual polygons of Polygons1Polygons1Polygons1Polygons1polygons1 and Polygons2Polygons2Polygons2Polygons2polygons2, respectively). Each boundary may be convex or concave and self-intersecting. Internal holes may be formed by the nesting of boundaries.

The region enclosed by such a boundary set is defined by the so-called Even-Odd-Rule. Thus, it consists of all points with the following property: The line constructed by connecting the point with another reference point that lies outside of the region has an odd number of intersections with boundaries.

More descriptive, this means that a boundary defines a hole in the region enclosed by another boundary if it lies completely inside that region. Similarly, the overlapping area of two separate boundaries of one boundary set is taken as a "hole", i.e., it does not belong to the region enclosed by the two boundaries. Note that the region enclosed by a boundary does not depend on the orientation of the boundary.

A self-intersecting boundary may be split at the intersection point or it is reordered such that it touches itself at the intersection point. The resulting boundaries are treated as separate boundaries.

Attention

The resulting polygons PolygonsDifferencePolygonsDifferencePolygonsDifferencePolygonsDifferencepolygonsDifference contain no references to the XLD contours that are possibly referenced by Polygons1Polygons1Polygons1Polygons1polygons1 and Polygons2Polygons2Polygons2Polygons2polygons2. Hence, operators that access the contours associated with a polygon, e.g., split_contours_xldsplit_contours_xldSplitContoursXldSplitContoursXldSplitContoursXld will not work correctly.

Execution Information

Parameters

Polygons1Polygons1Polygons1Polygons1polygons1 (input_object)  xld_poly(-array) objectHXLDPolyHXLDPolyHobject

Polygons enclosing the first region.

Polygons2Polygons2Polygons2Polygons2polygons2 (input_object)  xld_poly(-array) objectHXLDPolyHXLDPolyHobject

Polygons enclosing the second region.

PolygonsDifferencePolygonsDifferencePolygonsDifferencePolygonsDifferencepolygonsDifference (output_object)  xld_poly(-array) objectHXLDPolyHXLDPolyHobject *

Polygons enclosing the symmetric difference.

Result

symm_difference_closed_polygons_xldsymm_difference_closed_polygons_xldSymmDifferenceClosedPolygonsXldSymmDifferenceClosedPolygonsXldSymmDifferenceClosedPolygonsXld returns 2 (H_MSG_TRUE) if all parameters are correct. If necessary, an exception is raised.

Possible Predecessors

gen_polygons_xldgen_polygons_xldGenPolygonsXldGenPolygonsXldGenPolygonsXld

Alternatives

symm_differencesymm_differenceSymmDifferenceSymmDifferenceSymmDifference

See also

intersection_closed_polygons_xldintersection_closed_polygons_xldIntersectionClosedPolygonsXldIntersectionClosedPolygonsXldIntersectionClosedPolygonsXld, difference_closed_polygons_xlddifference_closed_polygons_xldDifferenceClosedPolygonsXldDifferenceClosedPolygonsXldDifferenceClosedPolygonsXld, union2_closed_polygons_xldunion2_closed_polygons_xldUnion2ClosedPolygonsXldUnion2ClosedPolygonsXldUnion2ClosedPolygonsXld, symm_difference_closed_contours_xldsymm_difference_closed_contours_xldSymmDifferenceClosedContoursXldSymmDifferenceClosedContoursXldSymmDifferenceClosedContoursXld

Module

Foundation