distance_object_model_3dT_distance_object_model_3dDistanceObjectModel3dDistanceObjectModel3d (Operator)

Name

distance_object_model_3dT_distance_object_model_3dDistanceObjectModel3dDistanceObjectModel3d — Bestimmt die Abstände der Punkte eines 3D-Objektmodells zu einem anderen 3D-Objektmodell.

Signatur

distance_object_model_3d( : : ObjectModel3DFrom, ObjectModel3DTo, Pose, MaxDistance, GenParamName, GenParamValue : )

Herror T_distance_object_model_3d(const Htuple ObjectModel3DFrom, const Htuple ObjectModel3DTo, const Htuple Pose, const Htuple MaxDistance, const Htuple GenParamName, const Htuple GenParamValue)

void DistanceObjectModel3d(const HTuple& ObjectModel3DFrom, const HTuple& ObjectModel3DTo, const HTuple& Pose, const HTuple& MaxDistance, const HTuple& GenParamName, const HTuple& GenParamValue)

void HObjectModel3D::DistanceObjectModel3d(const HObjectModel3D& ObjectModel3DTo, const HPose& Pose, const HTuple& MaxDistance, const HTuple& GenParamName, const HTuple& GenParamValue) const

void HObjectModel3D::DistanceObjectModel3d(const HObjectModel3D& ObjectModel3DTo, const HPose& Pose, double MaxDistance, const HString& GenParamName, const HString& GenParamValue) const

void HObjectModel3D::DistanceObjectModel3d(const HObjectModel3D& ObjectModel3DTo, const HPose& Pose, double MaxDistance, const char* GenParamName, const char* GenParamValue) const

void HObjectModel3D::DistanceObjectModel3d(const HObjectModel3D& ObjectModel3DTo, const HPose& Pose, double MaxDistance, const wchar_t* GenParamName, const wchar_t* GenParamValue) const   (Nur Windows)

static void HOperatorSet.DistanceObjectModel3d(HTuple objectModel3DFrom, HTuple objectModel3DTo, HTuple pose, HTuple maxDistance, HTuple genParamName, HTuple genParamValue)

void HObjectModel3D.DistanceObjectModel3d(HObjectModel3D objectModel3DTo, HPose pose, HTuple maxDistance, HTuple genParamName, HTuple genParamValue)

void HObjectModel3D.DistanceObjectModel3d(HObjectModel3D objectModel3DTo, HPose pose, double maxDistance, string genParamName, string genParamValue)

Beschreibung

Der Operator distance_object_model_3ddistance_object_model_3dDistanceObjectModel3dDistanceObjectModel3dDistanceObjectModel3d bestimmt die Abstände der Punkte im 3D-Objektmodell ObjectModel3DFromObjectModel3DFromObjectModel3DFromObjectModel3DFromobjectModel3DFrom zu den Punkten, Dreiecken oder dem Primitiv im 3D-Objektmodell ObjectModel3DToObjectModel3DToObjectModel3DToObjectModel3DToobjectModel3DTo. Die Abstände werden im 3D-Objektmodell ObjectModel3DFromObjectModel3DFromObjectModel3DFromObjectModel3DFromobjectModel3DFrom als erweitertes Attribut mit dem Namen '&distance'"&distance""&distance""&distance""&distance" gespeichert. Die Abstände können danach mittels get_object_model_3d_paramsget_object_model_3d_paramsGetObjectModel3dParamsGetObjectModel3dParamsGetObjectModel3dParams abgerufen werden oder mittels select_points_object_model_3dselect_points_object_model_3dSelectPointsObjectModel3dSelectPointsObjectModel3dSelectPointsObjectModel3d oder anderen Operatoren, die erweiterte Attribute verwenden, weiterverarbeitet werden.

Die Zieldaten (Punkte, Dreiecke oder Primitiv) werden anhand der in ObjectModel3DToObjectModel3DToObjectModel3DToObjectModel3DToobjectModel3DTo vorhandenen Daten ausgewählt. Dabei werden die ersten vorhandenen Daten in der folgenden Reihenfolge verwendet: Primitiv, Dreiecke, Punkte. Alternativ zu dieser automatischen Auswahl können die Zieldaten auch manuell mit dem generischen Parameter 'distance_to'"distance_to""distance_to""distance_to""distance_to" gesetzt werden (s.u.). Allgemeine Polygone werden intern trianguliert bevor der Abstand zu den Dreiecken berechnet wird. In diesem Sinne ist ein Operator-Aufruf mit schon triangulierten Objekten schneller als einer für Objekte mit allgemeinen Polygonen.

MaxDistanceMaxDistanceMaxDistanceMaxDistancemaxDistance kann benutzt werden, um einen Schwellwert für die berechneten Distanzen zu setzen. Wenn MaxDistanceMaxDistanceMaxDistanceMaxDistancemaxDistance auf 0 gesetzt wird, werden alle Distanzen berechnet. Wenn MaxDistanceMaxDistanceMaxDistanceMaxDistancemaxDistance auf einen anderen Wert gesetzt wird, werden alle Punkte, bei denen die Distanz MaxDistanceMaxDistanceMaxDistanceMaxDistancemaxDistance überschreiten würde, nicht verarbeitet. Für diese Punkte wird der Wert von MaxDistanceMaxDistanceMaxDistanceMaxDistancemaxDistance in dem Attribut '&distance'"&distance""&distance""&distance""&distance" gespeichert. Das Setzen von MaxDistanceMaxDistanceMaxDistanceMaxDistancemaxDistance kann also die Geschwindigkeit des Operators deutlich erhöhen, wenn ein Wert ungleich 0 eingestellt wird.

Ist PosePosePosePosepose ein nicht-leeres Tupel, so gibt es eine Pose an, welche vor der Distanzbestimmung auf die Punkte von ObjectModel3DFromObjectModel3DFromObjectModel3DFromObjectModel3DFromobjectModel3DFrom angewandt wird. Die Pose kann über den generischen Parameter 'invert_pose'"invert_pose""invert_pose""invert_pose""invert_pose" invertiert werden (s.u.).

Je nach Zieldatentyp (Punkte, Dreiecke oder Primitiv) gibt es verschiedene Methoden zur Abstandsbestimmung. Einige dieser Methoden bauen eine Datenstruktur über den Elementen von ObjectModel3DToObjectModel3DToObjectModel3DToObjectModel3DToobjectModel3DTo auf, welche die Berechnung beschleunigt. Der Aufbau dieser Datenstruktur für das 3D-Objektmodell ObjectModel3DToObjectModel3DToObjectModel3DToObjectModel3DToobjectModel3DTo kann auch durch den Operator prepare_object_model_3dprepare_object_model_3dPrepareObjectModel3dPrepareObjectModel3dPrepareObjectModel3d durchgeführt werden. Dies hat den Vorteil, dass der Aufbau auch bei mehreren Aufrufen von distance_object_model_3ddistance_object_model_3dDistanceObjectModel3dDistanceObjectModel3dDistanceObjectModel3d mit demselben Ziel-Objektmodell nur einmal durchgeführt werden muss, beispielsweise bei einem Suchmodell. Objekte mit allgemeinen Polygonen können zusätzlich mit dem Operator prepare_object_model_3dprepare_object_model_3dPrepareObjectModel3dPrepareObjectModel3dPrepareObjectModel3d trianguliert werden und die Dreiecke werden im 3D-Objekt gespeichert, um die Abstandsberechnung weiter zu beschleunigen. Die Triangulierung wird nur ausgeführt, wenn der generische Parameter 'distance_to'"distance_to""distance_to""distance_to""distance_to" auf 'triangles'"triangles""triangles""triangles""triangles" gesetzt ist. Entgegen der Triangulierung im Operator triangulate_object_model_3dtriangulate_object_model_3dTriangulateObjectModel3dTriangulateObjectModel3dTriangulateObjectModel3d wird hier das Attribut mit den Polygonen nicht gelöscht.

Wenn der Abstand zu Punkten oder zu Dreiecken berechnet wird kann der Operator optional den Index des jeweils nächsten Punktes oder Dreiecks für jeden Punkt aus ObjectModel3DFromObjectModel3DFromObjectModel3DFromObjectModel3DFromobjectModel3DFrom zurückgeben. Dazu muss der generische Parameter 'store_closest_index'"store_closest_index""store_closest_index""store_closest_index""store_closest_index" auf 'true'"true""true""true""true" gesetzt werden (siehe unten). Der Index wird als erweitertes Attribut mit dem Namen '&closest_index'"&closest_index""&closest_index""&closest_index""&closest_index" im 3D-Objektmodell ObjectModel3DFromObjectModel3DFromObjectModel3DFromObjectModel3DFromobjectModel3DFrom gespeichert. Der Index kann nicht berechnet werden, wenn die 'voxel'"voxel""voxel""voxel""voxel"-Methode verwendet wird. Wenn der Abstand eines Punktes zu seinem nächsten Punkt oder Dreieck die in MaxDistanceMaxDistanceMaxDistanceMaxDistancemaxDistance definierte maximale Distanz überschreitet, so wird der Index seines nächsten Elements auf -1 gesetzt.

Optional können auch vorzeichenbehaftete Abstände zu Punkten, Dreiecken oder einem Primitiv berechnet werden. Dazu muss der generische Parameter 'signed_distances'"signed_distances""signed_distances""signed_distances""signed_distances" auf 'true'"true""true""true""true" gesetzt werden. Vorzeichenbehaftete Abstände können nicht berechnet werden, wenn bei Abständen von Punkten zu Punkten die 'voxel'"voxel""voxel""voxel""voxel"-Methode verwendet wird.

Im Folgenden werden die verschiedenen Zieldatentypen und Methoden erklärt, sowie ihre Vor- und Nachteile beschrieben. Der Operator distance_object_model_3ddistance_object_model_3dDistanceObjectModel3dDistanceObjectModel3dDistanceObjectModel3d bestimmt, abhängig von den Zieldaten, automatisch eine Methode. Alternativ kann die Methode manuell über den generischen Parameter 'mode'"mode""mode""mode""mode" gesetzt werden.

Abstand zu Punkten:

Für die Bestimmung der Punkt-zu-Punkt-Abstände werden die folgenden Methoden unterstützt:

Lineare Suche:

Für jeden Punkt aus ObjectModel3DFromObjectModel3DFromObjectModel3DFromObjectModel3DFromobjectModel3DFrom werden die Abstände zu allen Punkten in ObjectModel3DToObjectModel3DToObjectModel3DToObjectModel3DToobjectModel3DTo berechnet, und der kleinste Abstand verwendet. Diese Methode benötigt keine vorberechnete Datenstruktur, und ist für wenige Punkte in ObjectModel3DToObjectModel3DToObjectModel3DToObjectModel3DToobjectModel3DTo die schnellste.

KD-Baum:

Die Punkte in ObjectModel3DToObjectModel3DToObjectModel3DToObjectModel3DToobjectModel3DTo werden in einem KD-Baum organisiert, welcher die Suche nach dem nächsten Punkt beschleunigt. Der Aufbau des Baums ist sehr effizient. Die Suchzeit ist dabei in etwa logarithmisch zu der Anzahl der Punkten in ObjectModel3DToObjectModel3DToObjectModel3DToObjectModel3DToobjectModel3DTo. Die Suchzeit ist allerdings nicht konstant und kann stark von der Lage der Suchpunkte in ObjectModel3DFromObjectModel3DFromObjectModel3DFromObjectModel3DFromobjectModel3DFrom abhängen.

Voxel:

Die Punkte in ObjectModel3DToObjectModel3DToObjectModel3DToObjectModel3DToobjectModel3DTo werden in einer Voxelstruktur gespeichert. Diese Voxelstruktur erlaubt eine Suche in annähernd konstanter Zeit, d.h. unabhängig von der Lage des Suchpunktes und der Größe der Zielpunktwolke.

Der Aufbau der Voxelstruktur dauert allerdings deutlich länger als der Aufbau eines KD-Baums. Es ist möglich, diese Datenstruktur vorzuberechnen, indem man prepare_object_model_3dprepare_object_model_3dPrepareObjectModel3dPrepareObjectModel3dPrepareObjectModel3d mit Purpose 'distance_computation'"distance_computation""distance_computation""distance_computation""distance_computation" auf ObjectModel3DToObjectModel3DToObjectModel3DToObjectModel3DToobjectModel3DTo anwendet.

Abstand zu Dreiecken:

Für die Bestimmung des kleinsten Punkt-zu-Dreieck-Abstands werden die folgenden Methoden unterstützt:

Lineare Suche:

Für jeden Punkt aus ObjectModel3DFromObjectModel3DFromObjectModel3DFromObjectModel3DFromobjectModel3DFrom werden die Abstände zu allen Dreiecken in ObjectModel3DToObjectModel3DToObjectModel3DToObjectModel3DToobjectModel3DTo berechnet und der kleinste Abstand verwendet. Diese Methode benötigt keine vorberechnete Datenstruktur, und ist für wenige Dreiecke in ObjectModel3DToObjectModel3DToObjectModel3DToObjectModel3DToobjectModel3DTo die schnellste.

KD-Baum:

Die in ObjectModel3DToObjectModel3DToObjectModel3DToObjectModel3DToobjectModel3DTo gespeicherten Dreiecke werden in einem KD-Baum gespeichert, wodurch die Suche nach dem nächsten Dreieck beschleunigt wird. Der Aufbau des Baums ist vergleichsweise effizient. Die Suchzeit ist in etwa logarithmisch zu der Anzahl der Dreiecke in ObjectModel3DToObjectModel3DToObjectModel3DToObjectModel3DToobjectModel3DTo. Die Suchzeit ist allerdings nicht konstant und kann von der Lage der Suchpunkte in ObjectModel3DFromObjectModel3DFromObjectModel3DFromObjectModel3DFromobjectModel3DFrom abhängen.

Voxel:

Die Dreiecke in ObjectModel3DToObjectModel3DToObjectModel3DToObjectModel3DToobjectModel3DTo werden in einer Voxelstruktur gespeichert. Diese Voxelstruktur erlaubt eine Suche in annähernd konstanter Zeit, d.h. unabhängig von der Lage des Suchpunktes und der Anzahl der Dreiecke in der Zielstruktur.

Der Aufbau der Voxelstruktur dauert allerdings deutlich länger als der Aufbau eines KD-Baums. Es ist möglich, diese Datenstruktur vorzuberechnen, indem man prepare_object_model_3dprepare_object_model_3dPrepareObjectModel3dPrepareObjectModel3dPrepareObjectModel3d mit Purpose 'distance_computation'"distance_computation""distance_computation""distance_computation""distance_computation" auf ObjectModel3DToObjectModel3DToObjectModel3DToObjectModel3DToobjectModel3DTo anwendet. Für den Aufbau der Voxelstruktur werden die Dreiecke abgetastet. Die entsprechende Abtastdistanz kann mit den generischen Parameter 'sampling_dist_rel'"sampling_dist_rel""sampling_dist_rel""sampling_dist_rel""sampling_dist_rel" und 'sampling_dist_abs'"sampling_dist_abs""sampling_dist_abs""sampling_dist_abs""sampling_dist_abs" gesetzt werden.

Standardmäßig wird 'sampling_dist_rel'"sampling_dist_rel""sampling_dist_rel""sampling_dist_rel""sampling_dist_rel" auf 0.03 gesetzt. Eine genaue Beschreibung der beiden Parameter findet sich unten. Bei der Verwendung der Voxelstruktur für die Bestimmung der Abstände zu Dreiecken können die berechneten Distanzen in einigen Fällen um ca. 10% der Abtastdistanz von den tatsächlichen Abständen nach oben abweichen.

Abstand zu Primitiven:

Da ObjectModel3DToObjectModel3DToObjectModel3DToObjectModel3DToobjectModel3DTo nur ein Primitiv enthalten kann, werden die Punkt-zu-Primitiv-Abstände immer linear durchgeführt. Der Aufbau oder die Verwendung einer Datenstruktur ist weder nötig noch möglich.

Das Berechnen von Abständen zu primitiven Ebenen, die mittels segment_object_model_3dsegment_object_model_3dSegmentObjectModel3dSegmentObjectModel3dSegmentObjectModel3d oder fit_primitives_object_model_3dfit_primitives_object_model_3dFitPrimitivesObjectModel3dFitPrimitivesObjectModel3dFitPrimitivesObjectModel3d erzeugt wurden, kann vergleichsweise langsam sein, da diese Ebenen eine komplexe Ausdehnung beinhalten. Wenn nur der Abstand zu der Ebene relevant ist und die Ausdehnung ignoriert werden soll, wird empfohlen, die Pose der Ebene mittels get_object_model_3d_paramsget_object_model_3d_paramsGetObjectModel3dParamsGetObjectModel3dParamsGetObjectModel3dParams mit dem Parameter 'primitive_parameter_pose'"primitive_parameter_pose""primitive_parameter_pose""primitive_parameter_pose""primitive_parameter_pose" abzurufen und mittels gen_plane_object_model_3dgen_plane_object_model_3dGenPlaneObjectModel3dGenPlaneObjectModel3dGenPlaneObjectModel3d eine neue Ebene ohne Ausdehnung zu erzeugen.

Die folgende Tabelle gibt eine Übersicht über die verschiedenen Zieldaten, Methoden, sowie deren Vor- und Nachteile.

Zieldaten Methode Aufbau- Ungefähre Eigenschaften Zeit Suchzeit ---------------------------------------------------------------------------- Punkte linear 0 O(N) - Keine Vorberechnung - Schnellste Methode für kleine N - Standardmethode für N<100 Punkte kd-tree O(N log(N)) O(log(N)) - Schnelle Vorberechnung - Nicht-konstante Suchzeit - Standardmethode für N>=100 Punkte voxel O(N log(N)) O(log(log(N))) - Langsame Vorberechnung - Sehr schnelle Suche - Standardmethode für Vorberechnung mit distance_object_model_3ddistance_object_model_3dDistanceObjectModel3dDistanceObjectModel3dDistanceObjectModel3d Dreiecke linear 0 O(N) - Keine Vorberechnung - Schnellste Methode für kleine N - Standardmethode Dreiecke kd-tree O(N log(N)) O(log(N)) - Schnelle Vorberechnung - Nicht-konstante Suchzeit Dreiecke voxel O(N log(N)) O(log(log(N))) - Langsame Vorberechnung - Benötigt Abtastdistanz - Sehr schnelle Suche - Kleine Fehler möglich - Standardmethode für Vorberechnung mit distance_object_model_3ddistance_object_model_3dDistanceObjectModel3dDistanceObjectModel3dDistanceObjectModel3d Primitiv linear 0 O(1)

Zusätzlich zu den oben beschriebenen Parametern können die folgenden Parameter verwendet werden, um den Operator zu beeinflussen. Diese Parameter und ihre Werte können in den Parametern GenParamNameGenParamNameGenParamNameGenParamNamegenParamName und GenParamValueGenParamValueGenParamValueGenParamValuegenParamValue gesetzt werden. Alle der folgenden Parameter sind optional.

'distance_to'"distance_to""distance_to""distance_to""distance_to"

Mit diesem Parameter können die Zieldaten explizit ausgewählt werden.

'auto'"auto""auto""auto""auto"

(Standardwert) Die Zieldaten werden automatisch ausgewählt. Dazu wird überprüft, welches der folgenden Attribute in ObjectModel3DToObjectModel3DToObjectModel3DToObjectModel3DToobjectModel3DTo vorhanden ist, und das erste vorhandene verwendet: Primitiv, Dreiecke, Punkte.

'primitive'"primitive""primitive""primitive""primitive"

Es werden die Abstände zu dem in ObjectModel3DToObjectModel3DToObjectModel3DToObjectModel3DToobjectModel3DTo vorhandenen Primitiv berechnet.

'triangles'"triangles""triangles""triangles""triangles"

Es werden die Abstände zu den in ObjectModel3DToObjectModel3DToObjectModel3DToObjectModel3DToobjectModel3DTo vorhandenen Dreiecken berechnet.

'points'"points""points""points""points"

Es werden die Abstände zu den in ObjectModel3DToObjectModel3DToObjectModel3DToObjectModel3DToobjectModel3DTo vorhandenen Punkten berechnet.

'method'"method""method""method""method"

Mit diesem Parameter kann die zu verwendende Methode explizit gesetzt werden. Nicht alle Methoden sind für alle Zieldaten möglich. Die möglichen Kombinationen sind in obiger Tabelle aufgelistet.

'auto'"auto""auto""auto""auto"

(Standardwert) Es wird die Standardmethode für die ausgewählten Zieldaten verwendet.

'linear'"linear""linear""linear""linear"

Die Abstände werden über eine lineare Suche berechnet.

'kd-tree'"kd-tree""kd-tree""kd-tree""kd-tree"

Die Abstände werden über einen KD-Baum berechnet.

'voxel'"voxel""voxel""voxel""voxel"

Die Abstände werden über eine Voxelstruktur berechnet.

'invert_pose'"invert_pose""invert_pose""invert_pose""invert_pose"

Mit diesem Parameter kann die in PosePosePosePosepose übergebene Pose invertiert werden.

'false'"false""false""false""false"

(Standardwert) Die Pose wird nicht invertiert.

'true'"true""true""true""true"

Die Pose wird invertiert.

'output_attribute'"output_attribute""output_attribute""output_attribute""output_attribute"

Mit diesem Parameter kann der Name des erweiterten Attributs gesetzt werden, in welchem die berechneten Abstände gespeichert werden. Standardmäßig werden die Abstände in dem erweiterten Attribut mit dem Namen '&distance'"&distance""&distance""&distance""&distance" im Objektmodell ObjectModel3DFromObjectModel3DFromObjectModel3DFromObjectModel3DFromobjectModel3DFrom gespeichert. Wird das gleiche Objektmodell für mehrere Aufrufe von distance_object_model_3ddistance_object_model_3dDistanceObjectModel3dDistanceObjectModel3dDistanceObjectModel3d verwendet, so wird das Attribut überschrieben. Um dies zu vermeiden, kann der Name des Attributs verändert werden. Gültige Namen von erweiterten Attribute fangen mit einem '&'"&""&""&""&" an.

'sampling_dist_rel'"sampling_dist_rel""sampling_dist_rel""sampling_dist_rel""sampling_dist_rel", 'sampling_dist_abs'"sampling_dist_abs""sampling_dist_abs""sampling_dist_abs""sampling_dist_abs"

Diese Parameter werden verwendet, wenn die Abstände zu Dreiecken mit der Voxel-basierten Methode berechnet werden. Für den Aufbau der Voxelstruktur werden die Dreiecke regelmäßig abgetastet. Die Abtastdistanz kann entweder absolut mit dem Parameter 'sampling_dist_abs'"sampling_dist_abs""sampling_dist_abs""sampling_dist_abs""sampling_dist_abs" gesetzt werden, oder relativ zum Durchmesser des achsenparallelen umschließenden Quaders mit 'sampling_dist_rel'"sampling_dist_rel""sampling_dist_rel""sampling_dist_rel""sampling_dist_rel". Nur einer der beiden Parameter kann gesetzt werden. Der Durchmesser des achsenparallelen umschließenden Quaders kann mit get_object_model_3d_paramsget_object_model_3d_paramsGetObjectModel3dParamsGetObjectModel3dParamsGetObjectModel3dParams abgerufen werden. Die Erstellung der Voxelstruktur für Dreiecke kann sehr lange dauern und wird i.d.R. mittels prepare_object_model_3dprepare_object_model_3dPrepareObjectModel3dPrepareObjectModel3dPrepareObjectModel3d vorberechnet (siehe oben).

'store_closest_index'"store_closest_index""store_closest_index""store_closest_index""store_closest_index"

Dieser Parameter aktiviert die Berechnung des Index des nächsten Punktes oder Dreiecks für jeden Punkt in ObjectModel3DFromObjectModel3DFromObjectModel3DFromObjectModel3DFromobjectModel3DFrom (siehe oben). Die Indizes werden im erweiterten Attribut '&closest_index' zurückgegeben.

'false'"false""false""false""false"

(Standardwert) Der Index wird nicht zurückgegeben.

'true'"true""true""true""true"

Der Index wird zurückgegeben.

'signed_distances'"signed_distances""signed_distances""signed_distances""signed_distances"

Dieser Parameter wird verwendet, um vorzeichenbehaftete Abstände zwischen den Punkten im 3D-Objektmodell ObjectModel3DFromObjectModel3DFromObjectModel3DFromObjectModel3DFromobjectModel3DFrom zu den Punkten, Dreiecken oder dem Primitiv im 3D-Objektmodell ObjectModel3DToObjectModel3DToObjectModel3DToObjectModel3DToobjectModel3DTo zu berechnen.

'false'"false""false""false""false"

(Standardwert) Es werden Abstände ohne Vorzeichen zurückgegeben.

'true'"true""true""true""true"

Es werden vorzeichenbehaftete Abstände zurückgegeben.

Abhängig von den vorhandenen Zieldaten (Punkte, Dreiecke oder Primitive) sind die folgenden Besonderheiten zu beachten:

Abstand zu Punkten:

Eine Berechnung von vorzeichenbehafteten Abständen zu Punkten wird nur für die Methoden 'kd-tree'"kd-tree""kd-tree""kd-tree""kd-tree"' und 'linear'"linear""linear""linear""linear" unterstützt. Unabhängig davon welche der beiden Methoden für die Bestimmung des kleinsten Punkt-zu-Punkt-Abstands verwendet wird, ist eine Berechnung der vorzeichenbehafteten Distanz nur möglich, wenn Punktnormalen für die Punkte im 3D-Objektmodell ObjectModel3DToObjectModel3DToObjectModel3DToObjectModel3DToobjectModel3DTo vorhanden sind oder mit dem Operator set_object_model_3d_attrib_modset_object_model_3d_attrib_modSetObjectModel3dAttribModSetObjectModel3dAttribModSetObjectModel3dAttribMod gesetzt wurden.

Abstand zu Dreiecken:

Vorzeichenbehaftete Distanzen können für alle oben aufgeführten Methoden berechnet werden. Bei vorzeichenbehafteten Abständen von Punkten zu Dreiecken wird die Distanz negativ gesetzt, wenn das Skalarprodukt mit dem Normalenvektor des Dreiecks kleiner Null ist.

Abstand zu Primitiven:

Berechnet man den Abstand zu zylinderförmigen, kugelförmigen oder quaderförmigen Primitiven, so erhalten Punkte des 3D-Objektmodells ObjectModel3DFromObjectModel3DFromObjectModel3DFromObjectModel3DFromobjectModel3DFrom einen negativen Abstand, wenn sie sich innerhalb des Primitivs befinden und einen positiven, wenn sie außerhalb davon liegen. Werden Abstände von Punkten zu Ebenen berechnet, so erhalten Punkte einen negativen Abstand, wenn sie unterhalb der Ebene liegen und einen positiven wenn sie oberhalb davon liegen.

Ausführungsinformationen

Parameter

ObjectModel3DFromObjectModel3DFromObjectModel3DFromObjectModel3DFromobjectModel3DFrom (input_control)  object_model_3d HObjectModel3D, HTupleHTupleHtuple (handle) (IntPtr) (HHandle) (handle)

Handle des 3D-Objektmodells mit den Quelldaten.

ObjectModel3DToObjectModel3DToObjectModel3DToObjectModel3DToobjectModel3DTo (input_control)  object_model_3d HObjectModel3D, HTupleHTupleHtuple (handle) (IntPtr) (HHandle) (handle)

Handle des 3D-Objektmodells mit den Zieldaten.

PosePosePosePosepose (input_control)  pose HPose, HTupleHTupleHtuple (real / integer) (double / int / long) (double / Hlong) (double / Hlong)

Pose der Quelldaten in den Zieldaten.

Defaultwert: []

MaxDistanceMaxDistanceMaxDistanceMaxDistancemaxDistance (input_control)  number HTupleHTupleHtuple (real / integer) (double / int / long) (double / Hlong) (double / Hlong)

Maximal interessanter Abstand.

Defaultwert: 0

GenParamNameGenParamNameGenParamNameGenParamNamegenParamName (input_control)  attribute.name(-array) HTupleHTupleHtuple (string) (string) (HString) (char*)

Namen der generischen Parameter.

Defaultwert: []

Werteliste: 'distance_to'"distance_to""distance_to""distance_to""distance_to", 'invert_pose'"invert_pose""invert_pose""invert_pose""invert_pose", 'method'"method""method""method""method", 'output_attribute'"output_attribute""output_attribute""output_attribute""output_attribute", 'sampling_dist_abs'"sampling_dist_abs""sampling_dist_abs""sampling_dist_abs""sampling_dist_abs", 'sampling_dist_rel'"sampling_dist_rel""sampling_dist_rel""sampling_dist_rel""sampling_dist_rel", 'signed_distances'"signed_distances""signed_distances""signed_distances""signed_distances", 'store_closest_index'"store_closest_index""store_closest_index""store_closest_index""store_closest_index"

GenParamValueGenParamValueGenParamValueGenParamValuegenParamValue (input_control)  attribute.value(-array) HTupleHTupleHtuple (string / integer / real) (string / int / long / double) (HString / Hlong / double) (char* / Hlong / double)

Werte der generischen Parameter.

Defaultwert: []

Werteliste: 'auto'"auto""auto""auto""auto", 'false'"false""false""false""false", 'kd-tree'"kd-tree""kd-tree""kd-tree""kd-tree", 'linear'"linear""linear""linear""linear", 'points'"points""points""points""points", 'polygons'"polygons""polygons""polygons""polygons", 'primitive'"primitive""primitive""primitive""primitive", 'triangles'"triangles""triangles""triangles""triangles", 'true'"true""true""true""true", 'voxel'"voxel""voxel""voxel""voxel"

Ergebnis

distance_object_model_3ddistance_object_model_3dDistanceObjectModel3dDistanceObjectModel3dDistanceObjectModel3d liefert den Wert 2 (H_MSG_TRUE) wenn alle Parameter korrekt sind. Wenn notwendig wird eine Ausnahmebehaldung durchgeführt.

Vorgänger

prepare_object_model_3dprepare_object_model_3dPrepareObjectModel3dPrepareObjectModel3dPrepareObjectModel3d, read_object_model_3dread_object_model_3dReadObjectModel3dReadObjectModel3dReadObjectModel3d, find_surface_modelfind_surface_modelFindSurfaceModelFindSurfaceModelFindSurfaceModel, xyz_to_object_model_3dxyz_to_object_model_3dXyzToObjectModel3dXyzToObjectModel3dXyzToObjectModel3d

Nachfolger

get_object_model_3d_paramsget_object_model_3d_paramsGetObjectModel3dParamsGetObjectModel3dParamsGetObjectModel3dParams, render_object_model_3drender_object_model_3dRenderObjectModel3dRenderObjectModel3dRenderObjectModel3d, disp_object_model_3ddisp_object_model_3dDispObjectModel3dDispObjectModel3dDispObjectModel3d, clear_object_model_3dclear_object_model_3dClearObjectModel3dClearObjectModel3dClearObjectModel3d

Siehe auch

prepare_object_model_3dprepare_object_model_3dPrepareObjectModel3dPrepareObjectModel3dPrepareObjectModel3d

Modul

3D Metrology