ClassesClassesClassesClasses | | | | Operators

difference_closed_contours_xlddifference_closed_contours_xldDifferenceClosedContoursXlddifference_closed_contours_xldDifferenceClosedContoursXldDifferenceClosedContoursXld (Operator)

Name

difference_closed_contours_xlddifference_closed_contours_xldDifferenceClosedContoursXlddifference_closed_contours_xldDifferenceClosedContoursXldDifferenceClosedContoursXld — Compute the difference of closed contours.

Signature

difference_closed_contours_xld(Contours, Sub : ContoursDifference : : )

Herror difference_closed_contours_xld(const Hobject Contours, const Hobject Sub, Hobject* ContoursDifference)

Herror T_difference_closed_contours_xld(const Hobject Contours, const Hobject Sub, Hobject* ContoursDifference)

Herror difference_closed_contours_xld(Hobject Contours, Hobject Sub, Hobject* ContoursDifference)

HXLDCont HXLDCont::DifferenceClosedContoursXld(const HXLDCont& Sub) const

HXLDContArray HXLDContArray::DifferenceClosedContoursXld(const HXLDContArray& Sub) const

void DifferenceClosedContoursXld(const HObject& Contours, const HObject& Sub, HObject* ContoursDifference)

HXLDCont HXLDCont::DifferenceClosedContoursXld(const HXLDCont& Sub) const

void HOperatorSetX.DifferenceClosedContoursXld(
[in] IHUntypedObjectX* Contours, [in] IHUntypedObjectX* Sub, [out] IHUntypedObjectX*ContoursDifference)

IHXLDContX* HXLDContX.DifferenceClosedContoursXld([in] IHXLDContX* Sub)

static void HOperatorSet.DifferenceClosedContoursXld(HObject contours, HObject sub, out HObject contoursDifference)

HXLDCont HXLDCont.DifferenceClosedContoursXld(HXLDCont sub)

Description

The operator difference_closed_contours_xlddifference_closed_contours_xldDifferenceClosedContoursXlddifference_closed_contours_xldDifferenceClosedContoursXldDifferenceClosedContoursXld calculates the difference of the regions enclosed by the contours ContoursContoursContoursContoursContourscontours and SubSubSubSubSubsub. The boundaries of this difference are returned in ContoursDifferenceContoursDifferenceContoursDifferenceContoursDifferenceContoursDifferencecontoursDifference.

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

Internally, first, the regions enclosed by each set of contours (ContoursContoursContoursContoursContourscontours and SubSubSubSubSubsub, respectively) are determined as described below. Then, the difference of these two regions is calculated.

In the following, the two sets of input contours are referred to as boundary sets. A boundary set consists of an arbitrary number of boundaries (the individual contours of ContoursContoursContoursContoursContourscontours and SubSubSubSubSubsub, 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.

The resulting boundaries ContoursDifferenceContoursDifferenceContoursDifferenceContoursDifferenceContoursDifferencecontoursDifference are automatically classified into boundaries that enclose regions and boundaries that enclose holes. This information is stored in the global contour attribut 'is_hole'"is_hole""is_hole""is_hole""is_hole""is_hole". For boundaries that enclose holes, the global contour attribut 'is_hole'"is_hole""is_hole""is_hole""is_hole""is_hole" is set to 1. Otherwise, it is set to 0.

Parallelization

Parameters

ContoursContoursContoursContoursContourscontours (input_object)  xld_cont(-array) objectHXLDContHXLDContHXLDContHXLDContXHobject

Contours enclosing the region from which the second region is subtracted.

SubSubSubSubSubsub (input_object)  xld_cont(-array) objectHXLDContHXLDContHXLDContHXLDContXHobject

Contours enclosing the region that is subtracted from the first region.

ContoursDifferenceContoursDifferenceContoursDifferenceContoursDifferenceContoursDifferencecontoursDifference (output_object)  xld_cont(-array) objectHXLDContHXLDContHXLDContHXLDContXHobject *

Contours enclosing the difference.

Result

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

Possible Predecessors

gen_contour_region_xldgen_contour_region_xldGenContourRegionXldgen_contour_region_xldGenContourRegionXldGenContourRegionXld, zero_crossing_sub_pixzero_crossing_sub_pixZeroCrossingSubPixzero_crossing_sub_pixZeroCrossingSubPixZeroCrossingSubPix, threshold_sub_pixthreshold_sub_pixThresholdSubPixthreshold_sub_pixThresholdSubPixThresholdSubPix

Alternatives

differencedifferenceDifferencedifferenceDifferenceDifference

See also

intersection_closed_contours_xldintersection_closed_contours_xldIntersectionClosedContoursXldintersection_closed_contours_xldIntersectionClosedContoursXldIntersectionClosedContoursXld, symm_difference_closed_contours_xldsymm_difference_closed_contours_xldSymmDifferenceClosedContoursXldsymm_difference_closed_contours_xldSymmDifferenceClosedContoursXldSymmDifferenceClosedContoursXld, union2_closed_contours_xldunion2_closed_contours_xldUnion2ClosedContoursXldunion2_closed_contours_xldUnion2ClosedContoursXldUnion2ClosedContoursXld, difference_closed_polygons_xlddifference_closed_polygons_xldDifferenceClosedPolygonsXlddifference_closed_polygons_xldDifferenceClosedPolygonsXldDifferenceClosedPolygonsXld

Module

Foundation


ClassesClassesClassesClasses | | | | Operators