KlassenKlassenKlassenKlassen | | | | Operatoren

distance_contours_xlddistance_contours_xldDistanceContoursXlddistance_contours_xldDistanceContoursXldDistanceContoursXld (Operator)

Name

distance_contours_xlddistance_contours_xldDistanceContoursXlddistance_contours_xldDistanceContoursXldDistanceContoursXld — Berechnen des punktweisen Abstands einer Kontur zu einer anderen.

Signatur

distance_contours_xld(ContourFrom, ContourTo : ContourOut : Mode : )

Herror distance_contours_xld(const Hobject ContourFrom, const Hobject ContourTo, Hobject* ContourOut, const char* Mode)

Herror T_distance_contours_xld(const Hobject ContourFrom, const Hobject ContourTo, Hobject* ContourOut, const Htuple Mode)

Herror distance_contours_xld(Hobject ContourFrom, Hobject ContourTo, Hobject* ContourOut, const HTuple& Mode)

HXLDCont HXLDCont::DistanceContoursXld(const HXLDCont& ContourTo, const HTuple& Mode) const

HXLDContArray HXLDContArray::DistanceContoursXld(const HXLDContArray& ContourTo, const HTuple& Mode) const

void DistanceContoursXld(const HObject& ContourFrom, const HObject& ContourTo, HObject* ContourOut, const HTuple& Mode)

HXLDCont HXLDCont::DistanceContoursXld(const HXLDCont& ContourTo, const HString& Mode) const

HXLDCont HXLDCont::DistanceContoursXld(const HXLDCont& ContourTo, const char* Mode) const

void HOperatorSetX.DistanceContoursXld(
[in] IHUntypedObjectX* ContourFrom, [in] IHUntypedObjectX* ContourTo, [out] IHUntypedObjectX*ContourOut, [in] VARIANT Mode)

IHXLDContX* HXLDContX.DistanceContoursXld(
[in] IHXLDContX* ContourTo, [in] BSTR Mode)

static void HOperatorSet.DistanceContoursXld(HObject contourFrom, HObject contourTo, out HObject contourOut, HTuple mode)

HXLDCont HXLDCont.DistanceContoursXld(HXLDCont contourTo, string mode)

Beschreibung

Der Operator distance_contours_xlddistance_contours_xldDistanceContoursXlddistance_contours_xldDistanceContoursXldDistanceContoursXld berechnet für jeden Punkt in ContourFromContourFromContourFromContourFromContourFromcontourFrom den minimalen Abstand zu den in ContourToContourToContourToContourToContourTocontourTo übergebenen Konturen. Die zurückgelieferte Kontur ContourOutContourOutContourOutContourOutContourOutcontourOut enthält ContourFromContourFromContourFromContourFromContourFromcontourFrom mit dem Attribut 'distance'"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""distance" mit dem Operator get_contour_attrib_xldget_contour_attrib_xldGetContourAttribXldget_contour_attrib_xldGetContourAttribXldGetContourAttribXld abgerufen werden.

Der Parameter ModeModeModeModeModemode legt fest, welche Abstände für jeden Punkt in ContourFromContourFromContourFromContourFromContourFromcontourFrom berechnet werden: 'point_to_point'"point_to_point""point_to_point""point_to_point""point_to_point""point_to_point" berechnet den minimalen Abstand zu den Stützpunkten von ContourToContourToContourToContourToContourTocontourTo. Dagegen berechnet 'point_to_segment'"point_to_segment""point_to_segment""point_to_segment""point_to_segment""point_to_segment" den minimalen Abstand zu den Kontursegmenten von ContourToContourToContourToContourToContourTocontourTo (siehe auch nachstehende Abbildung).

Die gestrichelten Linien stellen dar, welcher Abstand ausgehend vom Punkt in ContourFromContourFromContourFromContourFromContourFromcontourFrom links berechnet wird. Der Abstand entspricht dem Modus 'point_to_point'"point_to_point""point_to_point""point_to_point""point_to_point""point_to_point", der Abstand dem Modus 'point_to_segment'"point_to_segment""point_to_segment""point_to_segment""point_to_segment""point_to_segment".

In vielen Anwendungen bietet sich 'point_to_segment'"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""point_to_point" deutlich schneller ist. Bezeichnet m die Anzahl der Punkte in ContourFromContourFromContourFromContourFromContourFromcontourFrom, n die Anzahl der Punkte in ContourToContourToContourToContourToContourTocontourTo, dann hat distance_contours_xlddistance_contours_xldDistanceContoursXlddistance_contours_xldDistanceContoursXldDistanceContoursXld die Komplexität O(mlog(n)) für 'point_to_point'"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""point_to_segment". Falls die Referenzkontur wiederholt verwendet wird, können die Operatoren create_distance_transform_xldcreate_distance_transform_xldCreateDistanceTransformXldcreate_distance_transform_xldCreateDistanceTransformXldCreateDistanceTransformXld und apply_distance_transform_xldapply_distance_transform_xldApplyDistanceTransformXldapply_distance_transform_xldApplyDistanceTransformXldApplyDistanceTransformXld alternativ zu distance_contours_xlddistance_contours_xldDistanceContoursXlddistance_contours_xldDistanceContoursXldDistanceContoursXld benutzt werden. Nähere Information hierzu finden sich in der Dokumentation zu create_distance_transform_xldcreate_distance_transform_xldCreateDistanceTransformXldcreate_distance_transform_xldCreateDistanceTransformXldCreateDistanceTransformXld.

Parallelisierung

Parameter

ContourFromContourFromContourFromContourFromContourFromcontourFrom (input_object)  xld_cont(-array) objectHXLDContHXLDContHXLDContHXLDContXHobject

Konturen, für deren Punkte die Abstände berechnet werden.

ContourToContourToContourToContourToContourTocontourTo (input_object)  xld_cont(-array) objectHXLDContHXLDContHXLDContHXLDContXHobject

Konturen, zu denen die Abstände berechnet werden.

ContourOutContourOutContourOutContourOutContourOutcontourOut (output_object)  xld_cont(-array) objectHXLDContHXLDContHXLDContHXLDContXHobject *

Kopie von ContourFromContourFromContourFromContourFromContourFromcontourFrom mit den Abständen als Attribut.

ModeModeModeModeModemode (input_control)  string HTupleHTupleHTupleVARIANTHtuple (string) (string) (HString) (char*) (BSTR) (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" "point_to_point"

Werteliste: 'point_to_point'"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""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_xldGetContourAttribXldget_contour_attrib_xldGetContourAttribXldGetContourAttribXld, segment_contour_attrib_xldsegment_contour_attrib_xldSegmentContourAttribXldsegment_contour_attrib_xldSegmentContourAttribXldSegmentContourAttribXld

Alternativen

apply_distance_transform_xldapply_distance_transform_xldApplyDistanceTransformXldapply_distance_transform_xldApplyDistanceTransformXldApplyDistanceTransformXld, distance_ccdistance_ccDistanceCcdistance_ccDistanceCcDistanceCc, distance_cc_mindistance_cc_minDistanceCcMindistance_cc_minDistanceCcMinDistanceCcMin

Modul

Foundation


KlassenKlassenKlassenKlassen | | | | Operatoren