Calculate the difference of two regions.
difference calculates the set-theoretic difference of two regions:
(Regions in Region) - (Regions in Sub)The resulting region is defined as the input region (Region) with all points from Sub removed. The following two special regions can also be used as input:
'full' i.e., the full region (FULL_REGION in HORUS/C) or 'empty' i.e., the empty region (EMPTY_REGION in HORUS/C).
Empty regions are valid for both parameters. On output, empty regions may result; the value of the system flag 'store_empty_region' determines the behavior in this case.
Region (input_object) |
region(-array) -> object |
Regions to be processed. |
Sub (input_object) |
region(-array) -> object |
The union of these regions is subtracted from Region. |
RegionDifference (output_object) |
region(-array) -> object |
Resulting region. |
/* provides the region X without the points in Y */ difference(X,Y:RegionDifference::) > /* provides the region. */ difference(Region,[]:RegionDifference::) >
Let N be the number of regions, F_{1} be their average area, and F_{2} be the total area of all regions in Sub. Then the runtime complexity is O(F_{1} * F_{1}) + N * (F_{1} + F_{2})).
difference always returns the value TRUE. The behavior in case of empty input (no regions given) can be set via set_system(::'no_object_result',<Result>:) and the behavior in case of an empty input region via set_system(::'empty_region_result',<Result>:). If necessary, an exception is raised.
threshold__, connection, regiongrowing__, pouring, class_ndim1__
intersection, union1, union2, complement__