point_pluecker_line_to_hom_mat3d T_point_pluecker_line_to_hom_mat3d PointPlueckerLineToHomMat3d PointPlueckerLineToHomMat3d point_pluecker_line_to_hom_mat3d (Operator)
Name
point_pluecker_line_to_hom_mat3d T_point_pluecker_line_to_hom_mat3d PointPlueckerLineToHomMat3d PointPlueckerLineToHomMat3d point_pluecker_line_to_hom_mat3d — Berechnung einer Näherung für eine affine 3D-Transformation aus
3D-Punkt-zu-Gerade-Korrespondenzen.
Signatur
Herror T_point_pluecker_line_to_hom_mat3d (const Htuple TransformationType , const Htuple PointX , const Htuple PointY , const Htuple PointZ , const Htuple LineDirectionX , const Htuple LineDirectionY , const Htuple LineDirectionZ , const Htuple LineMomentX , const Htuple LineMomentY , const Htuple LineMomentZ , Htuple* HomMat3D )
void PointPlueckerLineToHomMat3d (const HTuple& TransformationType , const HTuple& PointX , const HTuple& PointY , const HTuple& PointZ , const HTuple& LineDirectionX , const HTuple& LineDirectionY , const HTuple& LineDirectionZ , const HTuple& LineMomentX , const HTuple& LineMomentY , const HTuple& LineMomentZ , HTuple* HomMat3D )
void HHomMat3D ::PointPlueckerLineToHomMat3d (const HString& TransformationType , const HTuple& PointX , const HTuple& PointY , const HTuple& PointZ , const HTuple& LineDirectionX , const HTuple& LineDirectionY , const HTuple& LineDirectionZ , const HTuple& LineMomentX , const HTuple& LineMomentY , const HTuple& LineMomentZ )
void HHomMat3D ::PointPlueckerLineToHomMat3d (const char* TransformationType , const HTuple& PointX , const HTuple& PointY , const HTuple& PointZ , const HTuple& LineDirectionX , const HTuple& LineDirectionY , const HTuple& LineDirectionZ , const HTuple& LineMomentX , const HTuple& LineMomentY , const HTuple& LineMomentZ )
void HHomMat3D ::PointPlueckerLineToHomMat3d (const wchar_t* TransformationType , const HTuple& PointX , const HTuple& PointY , const HTuple& PointZ , const HTuple& LineDirectionX , const HTuple& LineDirectionY , const HTuple& LineDirectionZ , const HTuple& LineMomentX , const HTuple& LineMomentY , const HTuple& LineMomentZ )
(Nur Windows)
static void HOperatorSet .PointPlueckerLineToHomMat3d (HTuple transformationType , HTuple pointX , HTuple pointY , HTuple pointZ , HTuple lineDirectionX , HTuple lineDirectionY , HTuple lineDirectionZ , HTuple lineMomentX , HTuple lineMomentY , HTuple lineMomentZ , out HTuple homMat3D )
void HHomMat3D .PointPlueckerLineToHomMat3d (string transformationType , HTuple pointX , HTuple pointY , HTuple pointZ , HTuple lineDirectionX , HTuple lineDirectionY , HTuple lineDirectionZ , HTuple lineMomentX , HTuple lineMomentY , HTuple lineMomentZ )
def point_pluecker_line_to_hom_mat3d (transformation_type : str, point_x : Sequence[float], point_y : Sequence[float], point_z : Sequence[float], line_direction_x : Sequence[Union[float, int]], line_direction_y : Sequence[Union[float, int]], line_direction_z : Sequence[Union[float, int]], line_moment_x : Sequence[Union[float, int]], line_moment_y : Sequence[Union[float, int]], line_moment_z : Sequence[Union[float, int]]) -> Sequence[float]
Beschreibung
point_pluecker_line_to_hom_mat3d point_pluecker_line_to_hom_mat3d PointPlueckerLineToHomMat3d PointPlueckerLineToHomMat3d PointPlueckerLineToHomMat3d point_pluecker_line_to_hom_mat3d berechnet eine Näherung für
eine affine 3D-Transformation aus 3D-Punkt-zu-Gerade-Korrespondenzen
und liefert sie in der homogenen Transformationsmatrix
HomMat3D HomMat3D HomMat3D HomMat3D homMat3D hom_mat_3d zurück.
Alle Eingabetupel müssen gleich viele Elemente enthalten und mindestens 3
Punkt-zu-Gerade-Korrespondenzen bestimmen.
Dabei stehen Korrespondenzen an denselben Indexpositionen.
Die Punkte werden durch
(PointX PointX PointX PointX pointX point_x , PointY PointY PointY PointY pointY point_y , PointZ PointZ PointZ PointZ pointZ point_z ) spezifiziert.
Die Geraden werden in Plückerkoordinaten
(LineDirectionX LineDirectionX LineDirectionX LineDirectionX lineDirectionX line_direction_x , LineDirectionY LineDirectionY LineDirectionY LineDirectionY lineDirectionY line_direction_y , LineDirectionZ LineDirectionZ LineDirectionZ LineDirectionZ lineDirectionZ line_direction_z )
und
(LineMomentX LineMomentX LineMomentX LineMomentX lineMomentX line_moment_x , LineMomentY LineMomentY LineMomentY LineMomentY lineMomentY line_moment_y , LineMomentZ LineMomentZ LineMomentZ LineMomentZ lineMomentZ line_moment_z )
gegeben.
Für die Definition von Plückerkoordinaten siehe
„Solution Guide III-C - 3D Vision“.
Der Typ der zu berechnenden 3D-Transformation wird mit
TransformationType TransformationType TransformationType TransformationType transformationType transformation_type festgelegt.
Für TransformationType TransformationType TransformationType TransformationType transformationType transformation_type = 'rigid' "rigid" "rigid" "rigid" "rigid" "rigid" wird eine starre
3D-Transformation (eine Rotation und eine Translation) berechnet.
Dies ist der einzige Transformationstyp, der momentan unterstützt wird.
Es ist zu beachten, dass für die minimale Anzahl von 3 Korrespondenzen bis zu
8 gültige Lösungen möglich sind. In diesem Fall gibt
point_pluecker_line_to_hom_mat3d point_pluecker_line_to_hom_mat3d PointPlueckerLineToHomMat3d PointPlueckerLineToHomMat3d PointPlueckerLineToHomMat3d point_pluecker_line_to_hom_mat3d eine willkürlich ausgewählte gültige
Lösung zurück.
Falls eine eindeutige Lösung erwünscht ist, sollten mindestens 4
Korrespondenzen übergeben werden.
Weiterhin ist zu beachten, dass keine wohldefinierte Lösung existiert, falls alle
Geraden parallel sind. In diesem Fall liefert
point_pluecker_line_to_hom_mat3d point_pluecker_line_to_hom_mat3d PointPlueckerLineToHomMat3d PointPlueckerLineToHomMat3d PointPlueckerLineToHomMat3d point_pluecker_line_to_hom_mat3d eine Fehlermeldung zurück.
Die zurückgelieferte Transformation HomMat3D HomMat3D HomMat3D HomMat3D homMat3D hom_mat_3d minimiert die
Summe der Quadrate der orthogonalen Abstände der mit
HomMat3D HomMat3D HomMat3D HomMat3D homMat3D hom_mat_3d transformierten Punkte zu ihren korrespondierenden
Geraden (siehe distance_point_pluecker_line distance_point_pluecker_line DistancePointPlueckerLine DistancePointPlueckerLine DistancePointPlueckerLine distance_point_pluecker_line ).
HomMat3D HomMat3D HomMat3D HomMat3D homMat3D hom_mat_3d kann direkt mit den Operatoren, die Daten mit
affinen 3D-Transformationen transformieren, z.B.
affine_trans_point_3d affine_trans_point_3d AffineTransPoint3d AffineTransPoint3d AffineTransPoint3d affine_trans_point_3d , verwendet werden.
Um die Geraden in Plückerkoordinaten zu transformieren, kann der Operator
dual_quat_trans_line_3d dual_quat_trans_line_3d DualQuatTransLine3d DualQuatTransLine3d DualQuatTransLine3d dual_quat_trans_line_3d verwendet werden.
Dazu muss HomMat3D HomMat3D HomMat3D HomMat3D homMat3D hom_mat_3d mittels hom_mat3d_to_pose hom_mat3d_to_pose HomMat3dToPose HomMat3dToPose HomMat3dToPose hom_mat3d_to_pose in eine Pose
umgewandelt werden. Die Pose muss dann mit pose_invert pose_invert PoseInvert PoseInvert PoseInvert pose_invert invertiert
werden und mittels pose_to_dual_quat pose_to_dual_quat PoseToDualQuat PoseToDualQuat PoseToDualQuat pose_to_dual_quat in eine duale Quaternion
konvertiert werden.
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
TransformationType TransformationType TransformationType TransformationType transformationType transformation_type (input_control) string → HTuple str HTuple Htuple (string) (string ) (HString ) (char* )
Typ der zu berechnenden Transformation.
Defaultwert:
'rigid'
"rigid"
"rigid"
"rigid"
"rigid"
"rigid"
Werteliste: 'rigid' "rigid" "rigid" "rigid" "rigid" "rigid"
PointX PointX PointX PointX pointX point_x (input_control) point3d.x-array → HTuple Sequence[float] HTuple Htuple (real) (double ) (double ) (double )
X-Koordinate der originalen Punkte.
PointY PointY PointY PointY pointY point_y (input_control) point3d.y-array → HTuple Sequence[float] HTuple Htuple (real) (double ) (double ) (double )
Y-Koordinate der originalen Punkte.
PointZ PointZ PointZ PointZ pointZ point_z (input_control) point3d.z-array → HTuple Sequence[float] HTuple Htuple (real) (double ) (double ) (double )
Z-Koordinate der originalen Punkte.
LineDirectionX LineDirectionX LineDirectionX LineDirectionX lineDirectionX line_direction_x (input_control) point3d.x-array → HTuple Sequence[Union[float, int]] HTuple Htuple (real / integer) (double / int / long) (double / Hlong) (double / Hlong)
X-Komponente des Richtungsvektors der korrespondierenden
Gerade.
LineDirectionY LineDirectionY LineDirectionY LineDirectionY lineDirectionY line_direction_y (input_control) point3d.y-array → HTuple Sequence[Union[float, int]] HTuple Htuple (real / integer) (double / int / long) (double / Hlong) (double / Hlong)
Y-Komponente des Richtungsvektors der korrespondierenden
Gerade.
LineDirectionZ LineDirectionZ LineDirectionZ LineDirectionZ lineDirectionZ line_direction_z (input_control) point3d.z-array → HTuple Sequence[Union[float, int]] HTuple Htuple (real / integer) (double / int / long) (double / Hlong) (double / Hlong)
Z-Komponente des Richtungsvektors der korrespondierenden
Gerade.
LineMomentX LineMomentX LineMomentX LineMomentX lineMomentX line_moment_x (input_control) point3d.x-array → HTuple Sequence[Union[float, int]] HTuple Htuple (real / integer) (double / int / long) (double / Hlong) (double / Hlong)
X-Komponente des Momentenvektors der korrespondierenden
Gerade.
LineMomentY LineMomentY LineMomentY LineMomentY lineMomentY line_moment_y (input_control) point3d.y-array → HTuple Sequence[Union[float, int]] HTuple Htuple (real / integer) (double / int / long) (double / Hlong) (double / Hlong)
Y-Komponente des Momentenvektors der korrespondierenden
Gerade.
LineMomentZ LineMomentZ LineMomentZ LineMomentZ lineMomentZ line_moment_z (input_control) point3d.z-array → HTuple Sequence[Union[float, int]] HTuple Htuple (real / integer) (double / int / long) (double / Hlong) (double / Hlong)
Z-Komponente des Momentenvektors der korrespondierenden
Gerade.
HomMat3D HomMat3D HomMat3D HomMat3D homMat3D hom_mat_3d (output_control) hom_mat3d → HHomMat3D , HTuple Sequence[float] HTuple Htuple (real) (double ) (double ) (double )
Ausgabe-Transformationsmatrix.
Beispiel (HDevelop)
* In this example, we assume that correspondences between points
* (PX, PY, PZ) and Plücker lines (LX, LY, LZ) - (MX, MY, MZ) have
* already been computed.
point_pluecker_line_to_hom_mat3d ('rigid', PX, PY, PZ, LX, LY, LZ, \
MX, MY, MZ, HomMat3D)
hom_mat3d_to_pose (HomMat3D, Pose)
* Compute the residual errors in 3D space, i.e., the distance of the
* points (PX, PY, PZ) transformed by HomMat3D from the lines.
affine_trans_point_3d (HomMat3D, PX, PY, PZ, TPX, TPY, TPZ)
distance_point_pluecker_line (TPX, TPY, TPZ, LX, LY, LZ, \
MX, MY, MZ, D)
* The same distance can also be computed by transforming the lines
* instead of the points. Here, the inverse pose must be used.
pose_invert (Pose, PoseInv)
pose_to_dual_quat (PoseInv, DualQuat)
dual_quat_trans_line_3d (DualQuat, 'moment', LX, LY, LZ, MX, MY, MZ, \
TLX, TLY, TLZ, TMX, TMY, TMZ)
distance_point_pluecker_line (PX, PY, PZ, TLX, TLY, TLZ, \
TMX, TMY, TMZ, D)
Vorgänger
get_line_of_sight get_line_of_sight GetLineOfSight GetLineOfSight GetLineOfSight get_line_of_sight ,
points_to_pluecker_line points_to_pluecker_line PointsToPlueckerLine PointsToPlueckerLine PointsToPlueckerLine points_to_pluecker_line ,
point_direction_to_pluecker_line point_direction_to_pluecker_line PointDirectionToPlueckerLine PointDirectionToPlueckerLine PointDirectionToPlueckerLine point_direction_to_pluecker_line
Nachfolger
hom_mat3d_to_pose hom_mat3d_to_pose HomMat3dToPose HomMat3dToPose HomMat3dToPose hom_mat3d_to_pose ,
affine_trans_point_3d affine_trans_point_3d AffineTransPoint3d AffineTransPoint3d AffineTransPoint3d affine_trans_point_3d ,
pose_invert pose_invert PoseInvert PoseInvert PoseInvert pose_invert ,
pose_to_dual_quat pose_to_dual_quat PoseToDualQuat PoseToDualQuat PoseToDualQuat pose_to_dual_quat ,
dual_quat_trans_line_3d dual_quat_trans_line_3d DualQuatTransLine3d DualQuatTransLine3d DualQuatTransLine3d dual_quat_trans_line_3d ,
distance_point_pluecker_line distance_point_pluecker_line DistancePointPlueckerLine DistancePointPlueckerLine DistancePointPlueckerLine distance_point_pluecker_line
Siehe auch
vector_to_hom_mat3d vector_to_hom_mat3d VectorToHomMat3d VectorToHomMat3d VectorToHomMat3d vector_to_hom_mat3d
Modul
Foundation