differencedifferenceDifferenceDifference (Operator)

Name

differencedifferenceDifferenceDifference — Calculate the difference of two regions.

Signature

difference(Region, Sub : RegionDifference : : )

Herror difference(const Hobject Region, const Hobject Sub, Hobject* RegionDifference)

Herror T_difference(const Hobject Region, const Hobject Sub, Hobject* RegionDifference)

void Difference(const HObject& Region, const HObject& Sub, HObject* RegionDifference)

HRegion HRegion::Difference(const HRegion& Sub) const

static void HOperatorSet.Difference(HObject region, HObject sub, out HObject regionDifference)

HRegion HRegion.Difference(HRegion sub)

Description

differencedifferenceDifferenceDifferenceDifference calculates the set-theoretic difference of two regions: (Regions in Region) - (Regions in Sub) The resulting region is defined as the input region (RegionRegionRegionRegionregion) with all points from SubSubSubSubsub removed. Note that, internally, all regions of SubSubSubSubsub are united to a single region before the differences between the individual regions of RegionRegionRegionRegionregion and the united region are calculated.

Attention

Empty regions are valid for both parameters. On output, empty regions may result. The value of the system flag 'store_empty_region'"store_empty_region""store_empty_region""store_empty_region""store_empty_region" determines the behavior in this case.

Execution Information

Parameters

RegionRegionRegionRegionregion (input_object)  region(-array) objectHRegionHRegionHobject

Regions to be processed.

SubSubSubSubsub (input_object)  region(-array) objectHRegionHRegionHobject

The union of these regions is subtracted from Region.

RegionDifferenceRegionDifferenceRegionDifferenceRegionDifferenceregionDifference (output_object)  region(-array) objectHRegionHRegionHobject *

Resulting region.

Example (HDevelop)

* provides the region X without the points in Y
difference(X,Y,RegionDifference)

Example (C)

/* provides the region X without the points in Y */
difference(X,Y,&RegionDifference);

Example (HDevelop)

* provides the region X without the points in Y
difference(X,Y,RegionDifference)

Example (HDevelop)

* provides the region X without the points in Y
difference(X,Y,RegionDifference)

Example (HDevelop)

* provides the region X without the points in Y
difference(X,Y,RegionDifference)

Complexity

Let N be the number of regions, F_1 be their average area, and F_2 be the total area of all regions in SubSubSubSubsub. Then the runtime complexity is O(F_1 * log(F_1) + N * (sqrt(F_1) + sqrt(F_2))).

Result

differencedifferenceDifferenceDifferenceDifference always returns the value 2 (H_MSG_TRUE). The behavior in case of empty input (no regions given) can be set via set_system('no_object_result',<Result>)set_system("no_object_result",<Result>)SetSystem("no_object_result",<Result>)SetSystem("no_object_result",<Result>)SetSystem("no_object_result",<Result>) and the behavior in case of an empty input region via set_system('empty_region_result',<Result>)set_system("empty_region_result",<Result>)SetSystem("empty_region_result",<Result>)SetSystem("empty_region_result",<Result>)SetSystem("empty_region_result",<Result>). If necessary, an exception is raised.

Possible Predecessors

thresholdthresholdThresholdThresholdThreshold, connectionconnectionConnectionConnectionConnection, regiongrowingregiongrowingRegiongrowingRegiongrowingRegiongrowing, pouringpouringPouringPouringPouring, class_ndim_normclass_ndim_normClassNdimNormClassNdimNormClassNdimNorm

Possible Successors

select_shapeselect_shapeSelectShapeSelectShapeSelectShape, disp_regiondisp_regionDispRegionDispRegionDispRegion

See also

intersectionintersectionIntersectionIntersectionIntersection, union1union1Union1Union1Union1, union2union2Union2Union2Union2, complementcomplementComplementComplementComplement, symm_differencesymm_differenceSymmDifferenceSymmDifferenceSymmDifference

Module

Foundation