Operator Reference

projective_trans_hom_point_3dT_projective_trans_hom_point_3dProjectiveTransHomPoint3dProjectiveTransHomPoint3dprojective_trans_hom_point_3d (Operator)

projective_trans_hom_point_3dT_projective_trans_hom_point_3dProjectiveTransHomPoint3dProjectiveTransHomPoint3dprojective_trans_hom_point_3d — Project a homogeneous 3D point using a projective transformation matrix.

Signature

projective_trans_hom_point_3d( : : HomMat3D, Px, Py, Pz, Pw : Qx, Qy, Qz, Qw)

Herror T_projective_trans_hom_point_3d(const Htuple HomMat3D, const Htuple Px, const Htuple Py, const Htuple Pz, const Htuple Pw, Htuple* Qx, Htuple* Qy, Htuple* Qz, Htuple* Qw)

void ProjectiveTransHomPoint3d(const HTuple& HomMat3D, const HTuple& Px, const HTuple& Py, const HTuple& Pz, const HTuple& Pw, HTuple* Qx, HTuple* Qy, HTuple* Qz, HTuple* Qw)

HTuple HHomMat3D::ProjectiveTransHomPoint3d(const HTuple& Px, const HTuple& Py, const HTuple& Pz, const HTuple& Pw, HTuple* Qy, HTuple* Qz, HTuple* Qw) const

double HHomMat3D::ProjectiveTransHomPoint3d(double Px, double Py, double Pz, double Pw, double* Qy, double* Qz, double* Qw) const

static void HOperatorSet.ProjectiveTransHomPoint3d(HTuple homMat3D, HTuple px, HTuple py, HTuple pz, HTuple pw, out HTuple qx, out HTuple qy, out HTuple qz, out HTuple qw)

HTuple HHomMat3D.ProjectiveTransHomPoint3d(HTuple px, HTuple py, HTuple pz, HTuple pw, out HTuple qy, out HTuple qz, out HTuple qw)

double HHomMat3D.ProjectiveTransHomPoint3d(double px, double py, double pz, double pw, out double qy, out double qz, out double qw)

def projective_trans_hom_point_3d(hom_mat_3d: Sequence[float], px: MaybeSequence[Union[float, int]], py: MaybeSequence[Union[float, int]], pz: MaybeSequence[Union[float, int]], pw: MaybeSequence[Union[float, int]]) -> Tuple[Sequence[float], Sequence[float], Sequence[float], Sequence[float]]

def projective_trans_hom_point_3d_s(hom_mat_3d: Sequence[float], px: MaybeSequence[Union[float, int]], py: MaybeSequence[Union[float, int]], pz: MaybeSequence[Union[float, int]], pw: MaybeSequence[Union[float, int]]) -> Tuple[float, float, float, float]

Description

projective_trans_hom_point_3dprojective_trans_hom_point_3dProjectiveTransHomPoint3dProjectiveTransHomPoint3dprojective_trans_hom_point_3d applies the homogeneous projective transformation matrix HomMat3DHomMat3DHomMat3DhomMat3Dhom_mat_3d to all homogeneous input points (PxPxPxpxpx,PyPyPypypy,PzPzPzpzpz,PwPwPwpwpw) and returns an array of homogeneous output points (QxQxQxqxqx,QyQyQyqyqy,QzQzQzqzqz,QwQwQwqwqw). The transformation is described by the homogeneous transformation matrix given in HomMat3DHomMat3DHomMat3DhomMat3Dhom_mat_3d. This corresponds to the following equation (input and output points as homogeneous vectors):

To transform the homogeneous coordinates to Euclidean coordinates, they must be divided by QwQwQwqwqw: This can be achieved directly by calling projective_trans_point_3dprojective_trans_point_3dProjectiveTransPoint3dProjectiveTransPoint3dprojective_trans_point_3d. Thus, projective_trans_hom_point_3dprojective_trans_hom_point_3dProjectiveTransHomPoint3dProjectiveTransHomPoint3dprojective_trans_hom_point_3d is primarily useful for transforming points or point sets for which the resulting points might lie in the plane at infinity, i.e., points that potentially have QwQwQwqwqw = 0, for which the above division cannot be performed.

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

HomMat3DHomMat3DHomMat3DhomMat3Dhom_mat_3d (input_control)  hom_mat3d HHomMat3D, HTupleSequence[float]HTupleHtuple (real) (double) (double) (double)

Homogeneous projective transformation matrix.

PxPxPxpxpx (input_control)  number(-array) HTupleMaybeSequence[Union[float, int]]HTupleHtuple (real / integer) (double / int / long) (double / Hlong) (double / Hlong)

Input point (x coordinate).

PyPyPypypy (input_control)  number(-array) HTupleMaybeSequence[Union[float, int]]HTupleHtuple (real / integer) (double / int / long) (double / Hlong) (double / Hlong)

Input point (y coordinate).

PzPzPzpzpz (input_control)  number(-array) HTupleMaybeSequence[Union[float, int]]HTupleHtuple (real / integer) (double / int / long) (double / Hlong) (double / Hlong)

Input point (z coordinate).

PwPwPwpwpw (input_control)  number(-array) HTupleMaybeSequence[Union[float, int]]HTupleHtuple (real / integer) (double / int / long) (double / Hlong) (double / Hlong)

Input point (w coordinate).

QxQxQxqxqx (output_control)  number(-array) HTupleSequence[float]HTupleHtuple (real) (double) (double) (double)

Output point (x coordinate).

QyQyQyqyqy (output_control)  number(-array) HTupleSequence[float]HTupleHtuple (real) (double) (double) (double)

Output point (y coordinate).

QzQzQzqzqz (output_control)  number(-array) HTupleSequence[float]HTupleHtuple (real) (double) (double) (double)

Output point (z coordinate).

QwQwQwqwqw (output_control)  number(-array) HTupleSequence[float]HTupleHtuple (real) (double) (double) (double)

Output point (w coordinate).

Possible Predecessors

vector_to_hom_mat3dvector_to_hom_mat3dVectorToHomMat3dVectorToHomMat3dvector_to_hom_mat3d

Alternatives

projective_trans_point_3dprojective_trans_point_3dProjectiveTransPoint3dProjectiveTransPoint3dprojective_trans_point_3d

Module

Foundation