Skip to content

partition_dynamicPartitionDynamicPartitionDynamicpartition_dynamicpartition_dynamic🔗

Short description🔗

partition_dynamicPartitionDynamicPartitionDynamicpartition_dynamicpartition_dynamic — Partition a region horizontally at positions of small vertical extent.

Signature🔗

partition_dynamic( region Region, out region Partitioned, real Distance, real Percent )void PartitionDynamic( const HObject& Region, HObject* Partitioned, const HTuple& Distance, const HTuple& Percent )static void HOperatorSet.PartitionDynamic( HObject region, out HObject partitioned, HTuple distance, HTuple percent )def partition_dynamic( region: HObject, distance: float, percent: float ) -> HObject

Herror partition_dynamic( const Hobject Region, Hobject* Partitioned, double Distance, double Percent )

Herror T_partition_dynamic( const Hobject Region, Hobject* Partitioned, const Htuple Distance, const Htuple Percent )

HRegion HRegion::PartitionDynamic( double Distance, double Percent ) const

HRegion HRegion.PartitionDynamic( double distance, double percent )

Description🔗

partition_dynamicPartitionDynamic partitions the input Regionregionregion horizontally into regions that have an approximate width of Distancedistancedistance. The input region is split at positions where it has a relatively small vertical extent.

The positions where the input region is split are determined by the following approach: First, initial split positions are determined such that they are equally distributed over the horizontal extent of the input region, i.e., such that all the resulting parts would have the same width. For this, the number \(n\) of resulting parts is determined by dividing the width of the input region by Distancedistancedistance and rounding the result to the closest integer value. The distance between the initial split positions is now calculated by dividing the width of the input region by \(n\). Note that the distance between these initial split positions is typically not identical to Distancedistancedistance. Then, the final split positions are determined in the neighborhood of the initial split positions such that the input region is split at positions where it has the least vertical extent within this neighborhood. The maximum deviation of the final split position from the initial split position is DistancedistancedistancePercentpercentpercent0.01.

The resulting regions are returned in Partitionedpartitionedpartitioned. Note that the input region is only partitioned if its width is larger than 1.5 times Distancedistancedistance.

Execution information🔗

Execution information
  • Multithreading type: reentrant (runs in parallel with non-exclusive operators).

  • Multithreading scope: global (may be called from any thread).

  • Automatically parallelized on tuple level.

Parameters🔗

Regionregionregion (input_object) region(-array) → objectHObjectHRegionHObjectHobject

Region to be partitioned.

Partitionedpartitionedpartitioned (output_object) region-array → objectHObjectHRegionHObjectHobject *

Partitioned region.

Distancedistancedistance (input_control) real → (real)HTuple (double)HTuple (double)floatHtuple (double)

Approximate width of the resulting region parts.

Percentpercentpercent (input_control) real → (real)HTuple (double)HTuple (double)floatHtuple (double)

Maximum percental shift of the split position.

Default: 2020
Suggested values: 0.0, 10.0, 20.0, 30.0, 40.0, 50.0, 70.0, 90.0, 100.00.0, 10.0, 20.0, 30.0, 40.0, 50.0, 70.0, 90.0, 100.0
Value range: 0 ≤ Percent ≤ 100

Result🔗

partition_dynamicPartitionDynamic returns 2 (H_MSG_TRUE) if all parameters are correct. The behavior in case of empty input (no regions given) can be set via set_system('no_object_result',<Result>), the behavior in case of an empty input region via set_system('empty_region_result',<Result>), and the behavior in case of an empty result region via set_system('store_empty_region',<'true'/'false'>). If necessary, an exception is raised.

Combinations with other operators🔗

Combinations

Possible predecessors

thresholdThreshold, connectionConnection

Alternatives

partition_rectanglePartitionRectangle

See also

intersectionIntersection, smallest_rectangle1SmallestRectangle1, shape_transShapeTrans, clip_regionClipRegion

Module🔗

Foundation