differencedifferenceDifferenceDifferencedifference (Operator)
Name
differencedifferenceDifferenceDifferencedifference
— Calculate the difference of two regions.
Signature
def difference(region: HObject, sub: HObject) -> HObject
Description
differencedifferenceDifferenceDifferenceDifferencedifference
calculates the set-theoretic difference of
two regions:
(Regions in Region) - (Regions in Sub)
The resulting region is defined as the input region
(RegionRegionRegionRegionregionregion
) with all points from SubSubSubSubsubsub
removed.
Note that, internally, all regions of SubSubSubSubsubsub
are united to
a single region before the differences between the individual regions of
RegionRegionRegionRegionregionregion
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""store_empty_region" determines the behavior in this
case.
Execution Information
- Multithreading type: reentrant (runs in parallel with non-exclusive operators).
- Multithreading scope: global (may be called from any thread).
- Processed without parallelization.
Parameters
RegionRegionRegionRegionregionregion
(input_object) region(-array) →
objectHRegionHObjectHRegionHobject
Regions to be processed.
SubSubSubSubsubsub
(input_object) region(-array) →
objectHRegionHObjectHRegionHobject
The union of these regions is subtracted from Region.
RegionDifferenceRegionDifferenceRegionDifferenceRegionDifferenceregionDifferenceregion_difference
(output_object) region(-array) →
objectHRegionHObjectHRegionHobject *
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 SubSubSubSubsubsub
. Then
the runtime complexity is
O(F_1 * log(F_1) + N * (sqrt(F_1) + sqrt(F_2))).
Result
differencedifferenceDifferenceDifferenceDifferencedifference
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>)set_system("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>)set_system("empty_region_result",<Result>)
.
If necessary, an exception is raised.
Possible Predecessors
thresholdthresholdThresholdThresholdThresholdthreshold
,
connectionconnectionConnectionConnectionConnectionconnection
,
regiongrowingregiongrowingRegiongrowingRegiongrowingRegiongrowingregiongrowing
,
pouringpouringPouringPouringPouringpouring
,
class_ndim_normclass_ndim_normClassNdimNormClassNdimNormClassNdimNormclass_ndim_norm
Possible Successors
select_shapeselect_shapeSelectShapeSelectShapeSelectShapeselect_shape
,
disp_regiondisp_regionDispRegionDispRegionDispRegiondisp_region
See also
intersectionintersectionIntersectionIntersectionIntersectionintersection
,
union1union1Union1Union1Union1union1
,
union2union2Union2Union2Union2union2
,
complementcomplementComplementComplementComplementcomplement
,
symm_differencesymm_differenceSymmDifferenceSymmDifferenceSymmDifferencesymm_difference
Module
Foundation