Skip to content

projective_trans_point_3dProjectiveTransPoint3dProjectiveTransPoint3dprojective_trans_point_3dT_projective_trans_point_3d🔗

Short description🔗

projective_trans_point_3dProjectiveTransPoint3dProjectiveTransPoint3dprojective_trans_point_3dT_projective_trans_point_3d — Project a 3D point using a projective transformation matrix.

Signature🔗

projective_trans_point_3d( hom_mat3d HomMat3D, number Px, number Py, number Pz, out number Qx, out number Qy, out number Qz )void ProjectiveTransPoint3d( const HTuple& HomMat3D, const HTuple& Px, const HTuple& Py, const HTuple& Pz, HTuple* Qx, HTuple* Qy, HTuple* Qz )static void HOperatorSet.ProjectiveTransPoint3d( HTuple homMat3D, HTuple px, HTuple py, HTuple pz, out HTuple qx, out HTuple qy, out HTuple qz )def projective_trans_point_3d( hom_mat_3d: Sequence[float], px: MaybeSequence[Union[float, int]], py: MaybeSequence[Union[float, int]], pz: MaybeSequence[Union[float, int]] ) -> Tuple[Sequence[float], Sequence[float], Sequence[float]]

def projective_trans_point_3d_s( hom_mat_3d: Sequence[float], px: MaybeSequence[Union[float, int]], py: MaybeSequence[Union[float, int]], pz: MaybeSequence[Union[float, int]] ) -> Tuple[float, float, float]Herror T_projective_trans_point_3d( const Htuple HomMat3D, const Htuple Px, const Htuple Py, const Htuple Pz, Htuple* Qx, Htuple* Qy, Htuple* Qz )

HTuple HHomMat3D::ProjectiveTransPoint3d( const HTuple& Px, const HTuple& Py, const HTuple& Pz, HTuple* Qy, HTuple* Qz ) const

double HHomMat3D::ProjectiveTransPoint3d( double Px, double Py, double Pz, double* Qy, double* Qz ) const

HTuple HHomMat3D.ProjectiveTransPoint3d( HTuple px, HTuple py, HTuple pz, out HTuple qy, out HTuple qz )

double HHomMat3D.ProjectiveTransPoint3d( double px, double py, double pz, out double qy, out double qz )

Description🔗

projective_trans_point_3dProjectiveTransPoint3d applies the homogeneous projective transformation matrix HomMat3DhomMat3Dhom_mat_3d to all input points (Pxpxpx,Pypypy,Pzpzpz) and returns an array of output points (Qxqxqx,Qyqyqy,Qzqzqz). The transformation is described by the homogeneous transformation matrix given in HomMat3DhomMat3Dhom_mat_3d. This corresponds to the following equations (input and output points as homogeneous vectors):

\[\begin{eqnarray*} \left( \begin{array}{c} Tx \\ Ty \\ Tz \\ Tw \end{array} \right) = \textrm{HomMat3D} \cdot \left( \begin{array}{c} \textrm{Px} \\ \textrm{Py} \\ \textrm{Pz} \\ 1 \end{array} \right) \end{eqnarray*}\]

projective_trans_point_3dProjectiveTransPoint3d then transforms the homogeneous coordinates to Euclidean coordinates by dividing them by \(Tw\):

\[\begin{eqnarray*} \left( \begin{array}{c} \textrm{Qx} \\ \textrm{Qy} \\ \textrm{Qz} \end{array} \right) = \left( \begin{array}{c} \frac{Tx}{Tw} \\ \frac{Ty}{Tw} \\ \frac{Tz}{Tw} \end{array} \right) \end{eqnarray*}\]

If a point in the plane at infinity (\(Tw = 0\)) is created by the transformation, an error is returned. If this is undesired, projective_trans_hom_point_3dProjectiveTransHomPoint3d can be used.

Execution information🔗

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

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

  • Automatically parallelized on internal data level.

Parameters🔗

HomMat3DhomMat3Dhom_mat_3d (input_control) hom_mat3d → (real)HTuple (double)HHomMat3D, HTuple (double)Sequence[float]Htuple (double)

Homogeneous projective transformation matrix.

Pxpxpx (input_control) number(-array) → (real / integer)HTuple (double / Hlong)HTuple (double / int / long)MaybeSequence[Union[float, int]]Htuple (double / Hlong)

Input point (x coordinate).

Pypypy (input_control) number(-array) → (real / integer)HTuple (double / Hlong)HTuple (double / int / long)MaybeSequence[Union[float, int]]Htuple (double / Hlong)

Input point (y coordinate).

Pzpzpz (input_control) number(-array) → (real / integer)HTuple (double / Hlong)HTuple (double / int / long)MaybeSequence[Union[float, int]]Htuple (double / Hlong)

Input point (z coordinate).

Qxqxqx (output_control) number(-array) → (real)HTuple (double)HTuple (double)Sequence[float]Htuple (double)

Output point (x coordinate).

Qyqyqy (output_control) number(-array) → (real)HTuple (double)HTuple (double)Sequence[float]Htuple (double)

Output point (y coordinate).

Qzqzqz (output_control) number(-array) → (real)HTuple (double)HTuple (double)Sequence[float]Htuple (double)

Output point (z coordinate).

Combinations with other operators🔗

Combinations

Possible predecessors

vector_to_hom_mat3dVectorToHomMat3d

Alternatives

projective_trans_hom_point_3dProjectiveTransHomPoint3d

Module🔗

Foundation