Skip to content

pose_composePoseComposePoseComposepose_composeT_pose_composeπŸ”—

Short descriptionπŸ”—

pose_composePoseComposePoseComposepose_composeT_pose_compose β€” Combine 3D poses given in two tuples.

SignatureπŸ”—

pose_compose( pose PoseLeft, pose PoseRight, out pose PoseCompose )void PoseCompose( const HTuple& PoseLeft, const HTuple& PoseRight, HTuple* PoseCompose )static void HOperatorSet.PoseCompose( HTuple poseLeft, HTuple poseRight, out HTuple poseCompose )def pose_compose( pose_left: Sequence[Union[float, int]], pose_right: Sequence[Union[float, int]] ) -> Sequence[Union[float, int]]

Herror T_pose_compose( const Htuple PoseLeft, const Htuple PoseRight, Htuple* PoseCompose )

static HPoseArray HPose::PoseCompose( const HPoseArray& PoseLeft, const HPoseArray& PoseRight )

HPose HPose::PoseCompose( const HPose& PoseRight ) const

static HPose[] HPose.PoseCompose( HPose[] poseLeft, HPose[] poseRight )

HPose HPose.PoseCompose( HPose poseRight )

DescriptionπŸ”—

pose_composePoseCompose combines the poses in the tuples, PoseLeftposeLeftpose_left and PoseRightposeRightpose_right. If both tuples contain the same number of poses, the corresponding elements of both tuples are composed. Otherwise, either tuple PoseLeftposeLeftpose_left or PoseRightposeRightpose_right must contain only one pose. In this case, the composition is performed for each pose of the longer tuple with the single pose of the other tuple. For each composition, the poses are interpreted as transformations of coordinate systems. The poses in tuple PoseComposeposeComposepose_compose are therefore the result of applying the corresponding poses in PoseLeftposeLeftpose_left and PoseRightposeRightpose_right in sequence.

First, the respective poses in PoseLeftposeLeftpose_left and PoseRightposeRightpose_right are transformed into the corresponding homogeneous transformation matrices \(\mvHomMatrixVar{}{1}\) and \(\mvHomMatrixVar{}{2}\). \(\mvHomMatrixVar{}{1}\) is then multiplied with \(\mvHomMatrixVar{}{2}\). The resulting matrix \(\mvHomMatrixVar{}{1}\cdot\) \(\mvHomMatrixVar{}{2}\) is converted into a pose and returned at the corresponding index in tuple PoseComposeposeComposepose_compose.

If the respective poses in PoseLeftposeLeftpose_left and PoseRightposeRightpose_right have different types, the default pose type 0 (β€˜Rp+T’, β€˜gba’, β€˜point’) is returned. Otherwise, the returned poses have the same types as the poses used for their composition.

Execution informationπŸ”—

Execution information
  • Multithreading type: reentrant (runs in parallel with non-exclusive operators).

  • Multithreading scope: global (may be called from any thread).

  • Processed without parallelization.

ParametersπŸ”—

PoseLeftposeLeftpose_left (input_control) pose(-array) β†’ (real / integer)HTuple (double / Hlong)HPose, HTuple (double / int / long)Sequence[Union[float, int]]Htuple (double / Hlong)

Tuple containing the left poses.

PoseRightposeRightpose_right (input_control) pose(-array) β†’ (real / integer)HTuple (double / Hlong)HPose, HTuple (double / int / long)Sequence[Union[float, int]]Htuple (double / Hlong)

Tuple containing the right poses.

PoseComposeposeComposepose_compose (output_control) pose(-array) β†’ (real / integer)HTuple (double / Hlong)HPose, HTuple (double / int / long)Sequence[Union[float, int]]Htuple (double / Hlong)

Tuple containing the returned poses.

ResultπŸ”—

pose_composePoseCompose returns 2 (H_MSG_TRUE) if all parameters are valid. If necessary, an exception is raised.

Combinations with other operatorsπŸ”—

Combinations

Possible predecessors

read_poseReadPose, hom_mat3d_to_poseHomMat3dToPose, create_poseCreatePose, convert_pose_typeConvertPoseType, pose_invertPoseInvert

Possible successors

convert_pose_typeConvertPoseType

Alternatives

hom_mat3d_composeHomMat3dCompose, dual_quat_composeDualQuatCompose

See also

pose_to_hom_mat3dPoseToHomMat3d, hom_mat3d_to_poseHomMat3dToPose, hom_mat3d_composeHomMat3dCompose

ModuleπŸ”—

Foundation