distance_contours_xlddistance_contours_xldDistanceContoursXldDistanceContoursXld (Operator)
Name
distance_contours_xlddistance_contours_xldDistanceContoursXldDistanceContoursXld
— Berechnen des punktweisen Abstands einer Kontur zu einer anderen.
Signatur
Beschreibung
Der Operator distance_contours_xlddistance_contours_xldDistanceContoursXldDistanceContoursXldDistanceContoursXld
berechnet für jeden Punkt in
ContourFromContourFromContourFromContourFromcontourFrom
den minimalen Abstand zu den in ContourToContourToContourToContourTocontourTo
übergebenen Konturen.
Die zurückgelieferte Kontur ContourOutContourOutContourOutContourOutcontourOut
enthält
ContourFromContourFromContourFromContourFromcontourFrom
mit dem Attribut 'distance'"distance""distance""distance""distance", in dem die
berechneten Abstände gespeichert sind.
Die Abstände können durch die Abfrage des Attributs
'distance'"distance""distance""distance""distance" mit dem Operator get_contour_attrib_xldget_contour_attrib_xldGetContourAttribXldGetContourAttribXldGetContourAttribXld
abgerufen werden. Weitere Informationen zu Konturattributen können der
Referenz von get_contour_attrib_xldget_contour_attrib_xldGetContourAttribXldGetContourAttribXldGetContourAttribXld
entnommen werden.
Der Parameter ModeModeModeModemode
legt fest, welche Abstände für jeden Punkt
in ContourFromContourFromContourFromContourFromcontourFrom
berechnet werden:
'point_to_point'"point_to_point""point_to_point""point_to_point""point_to_point" berechnet den minimalen Abstand zu den
Stützpunkten von ContourToContourToContourToContourTocontourTo
.
Dagegen berechnet 'point_to_segment'"point_to_segment""point_to_segment""point_to_segment""point_to_segment" den minimalen Abstand zu
den Kontursegmenten von ContourToContourToContourToContourTocontourTo
(siehe auch nachstehende
Abbildung).
In vielen Anwendungen bietet sich 'point_to_segment'"point_to_segment""point_to_segment""point_to_segment""point_to_segment" für die
eigentlich korrekte Lösung an, während 'point_to_point'"point_to_point""point_to_point""point_to_point""point_to_point"
deutlich schneller ist.
Bezeichnet m die Anzahl der Punkte in ContourFromContourFromContourFromContourFromcontourFrom
,
n die Anzahl der Punkte in ContourToContourToContourToContourTocontourTo
, dann hat
distance_contours_xlddistance_contours_xldDistanceContoursXldDistanceContoursXldDistanceContoursXld
die Komplexität O(mlog(n)) für
'point_to_point'"point_to_point""point_to_point""point_to_point""point_to_point", und O(mn) für 'point_to_segment'"point_to_segment""point_to_segment""point_to_segment""point_to_segment".
Falls die Referenzkontur wiederholt verwendet wird, können die
Operatoren create_distance_transform_xldcreate_distance_transform_xldCreateDistanceTransformXldCreateDistanceTransformXldCreateDistanceTransformXld
und
apply_distance_transform_xldapply_distance_transform_xldApplyDistanceTransformXldApplyDistanceTransformXldApplyDistanceTransformXld
alternativ zu
distance_contours_xlddistance_contours_xldDistanceContoursXldDistanceContoursXldDistanceContoursXld
benutzt werden.
Nähere Information hierzu finden sich in der Dokumentation zu
create_distance_transform_xldcreate_distance_transform_xldCreateDistanceTransformXldCreateDistanceTransformXldCreateDistanceTransformXld
.
Ausführungsinformationen
- Multithreading-Typ: reentrant (läuft parallel zu nicht-exklusiven Operatoren).
- Multithreading-Bereich: global (kann von jedem Thread aufgerufen werden).
- Wird ohne Parallelisierung verarbeitet.
Parameter
ContourFromContourFromContourFromContourFromcontourFrom
(input_object) xld_cont(-array) →
objectHXLDContHXLDContHobject
Konturen, für deren Punkte die Abstände
berechnet werden.
ContourToContourToContourToContourTocontourTo
(input_object) xld_cont(-array) →
objectHXLDContHXLDContHobject
Konturen, zu denen die Abstände
berechnet werden.
ModeModeModeModemode
(input_control) string →
HTupleHTupleHtuple (string) (string) (HString) (char*)
Berechne die Distanz zu Punkten ('point_to_point')
oder zu ganzen Segmenten ('point_to_segment').
Defaultwert:
'point_to_point'
"point_to_point"
"point_to_point"
"point_to_point"
"point_to_point"
Werteliste: 'point_to_point'"point_to_point""point_to_point""point_to_point""point_to_point", 'point_to_segment'"point_to_segment""point_to_segment""point_to_segment""point_to_segment"
Ergebnis
Sind die Parameterwerte korrekt, dann liefert der Operator
den Wert 2 (H_MSG_TRUE), sonst eine Fehlermeldung.
Nachfolger
get_contour_attrib_xldget_contour_attrib_xldGetContourAttribXldGetContourAttribXldGetContourAttribXld
,
segment_contour_attrib_xldsegment_contour_attrib_xldSegmentContourAttribXldSegmentContourAttribXldSegmentContourAttribXld
Alternativen
apply_distance_transform_xldapply_distance_transform_xldApplyDistanceTransformXldApplyDistanceTransformXldApplyDistanceTransformXld
,
distance_ccdistance_ccDistanceCcDistanceCcDistanceCc
,
distance_cc_mindistance_cc_minDistanceCcMinDistanceCcMinDistanceCcMin
Modul
Foundation