Name
gen_parallels_xldgen_parallels_xldGenParallelsXldgen_parallels_xldGenParallelsXldGenParallelsXld — Extract parallel XLD polygons.
Herror gen_parallels_xld(const Hobject Polygons, Hobject* Parallels, double Len, double Dist, double Alpha, const char* Merge)
Herror T_gen_parallels_xld(const Hobject Polygons, Hobject* Parallels, const Htuple Len, const Htuple Dist, const Htuple Alpha, const Htuple Merge)
void GenParallelsXld(const HObject& Polygons, HObject* Parallels, const HTuple& Len, const HTuple& Dist, const HTuple& Alpha, const HTuple& Merge)
HXLDPara HXLDPoly::GenParallelsXld(const HTuple& Len, const HTuple& Dist, const HTuple& Alpha, const HString& Merge) const
HXLDPara HXLDPoly::GenParallelsXld(double Len, double Dist, double Alpha, const HString& Merge) const
HXLDPara HXLDPoly::GenParallelsXld(double Len, double Dist, double Alpha, const char* Merge) const
static void HOperatorSet.GenParallelsXld(HObject polygons, out HObject parallels, HTuple len, HTuple dist, HTuple alpha, HTuple merge)
HXLDPara HXLDPoly.GenParallelsXld(HTuple len, HTuple dist, HTuple alpha, string merge)
HXLDPara HXLDPoly.GenParallelsXld(double len, double dist, double alpha, string merge)
gen_parallels_xldgen_parallels_xldGenParallelsXldgen_parallels_xldGenParallelsXldGenParallelsXld examines the XLD polygons passed in
PolygonsPolygonsPolygonsPolygonsPolygonspolygons for parallelism. The resulting parallel
polygons are returned in ParallelsParallelsParallelsParallelsParallelsparallels. If the parameter
MergeMergeMergeMergeMergemerge is set to 'true'"true""true""true""true""true", adjacent parallel polygons
are returned in a single parallel relation. Otherwise, one parallel
relation is returned for each pair of parallel line segments.
Only polygon segments longer than LenLenLenLenLenlen are taken into account.
Whether two polygon segments are parallel depends on a maximum allowed
angle difference AlphaAlphaAlphaAlphaAlphaalpha (in radians).
Furthermore, the projections of the two segments onto their angle bisector
have to overlap.
Finally, the overlap on the angle bisector is reprojected onto the two
segments. If the maximal distance of the reprojections is smaller than
DistDistDistDistDistdist, the segments are stored in ParallelsParallelsParallelsParallelsParallelsparallels.
As a side effect, a quality factor is calculated for each pair of
parallels, compare mod_parallels_xldmod_parallels_xldModParallelsXldmod_parallels_xldModParallelsXldModParallelsXld. It is based on the
normalized angular difference and the
normalized length of the overlap:
PI/2-delta_alpha 2*overlap
q = ---------------- * --------- with (0 <= q <= 1)
PI/2 len1+len2
Here, delta_alpha is the angle difference of the
polygon segments, overlap is the length of the overlap,
len1 and len2 the lengthes of the polygon
segments, and q the resulting quality factor.
The quality factor is a measure of parallelism (the larger its
value, the “more parallel” the polygons). Finally, the quality
factors of all parallel polygon segments contained in a single
polygon are added, weighted with their length of the overlapping
area. Note that you can query the range for the quality factor
with info_parallels_xldinfo_parallels_xldInfoParallelsXldinfo_parallels_xldInfoParallelsXldInfoParallelsXld.
- Multithreading type: reentrant (runs in parallel with non-exclusive operators).
- Multithreading scope: global (may be called from any thread).
- Processed without parallelization.
LenLenLenLenLenlen (input_control) number → HTupleHTupleHTupleVARIANTHtuple (real / integer) (double / int / long) (double / Hlong) (double / Hlong) (double / Hlong) (double / Hlong)
Minimum length of the individual polygon segments.
Default value: 10.0
Suggested values: 5.0, 10.0, 15.0, 20.0
Restriction: Len > 0.0
DistDistDistDistDistdist (input_control) number → HTupleHTupleHTupleVARIANTHtuple (real / integer) (double / int / long) (double / Hlong) (double / Hlong) (double / Hlong) (double / Hlong)
Maximum distance between the polygon segments.
Default value: 30.0
Suggested values: 20.0, 25.0, 30.0, 40.0, 50.0, 75.0
Restriction: Dist > 0.0
Maximum angle difference of the polygon segments.
Default value: 0.15
Suggested values: 0.05, 0.10, 0.15, 0.20, 0.30
Restriction: 0 <= Alpha && Alpha <= pi / 2
Should adjacent parallel relations be merged?
Default value:
'true'
"true"
"true"
"true"
"true"
"true"
List of values: 'false'"false""false""false""false""false", 'true'"true""true""true""true""true"
gen_polygons_xldgen_polygons_xldGenPolygonsXldgen_polygons_xldGenPolygonsXldGenPolygonsXld
mod_parallels_xldmod_parallels_xldModParallelsXldmod_parallels_xldModParallelsXldModParallelsXld,
get_parallels_xldget_parallels_xldGetParallelsXldget_parallels_xldGetParallelsXldGetParallelsXld,
info_parallels_xldinfo_parallels_xldInfoParallelsXldinfo_parallels_xldInfoParallelsXldInfoParallelsXld
Foundation