hom_mat2d_to_affine_parT_hom_mat2d_to_affine_parHomMat2dToAffineParHomMat2dToAffinePar (Operator)

Name

hom_mat2d_to_affine_parT_hom_mat2d_to_affine_parHomMat2dToAffineParHomMat2dToAffinePar — Compute the affine transformation parameters from a homogeneous 2D transformation matrix.

Signature

hom_mat2d_to_affine_par( : : HomMat2D : Sx, Sy, Phi, Theta, Tx, Ty)

Herror T_hom_mat2d_to_affine_par(const Htuple HomMat2D, Htuple* Sx, Htuple* Sy, Htuple* Phi, Htuple* Theta, Htuple* Tx, Htuple* Ty)

void HomMat2dToAffinePar(const HTuple& HomMat2D, HTuple* Sx, HTuple* Sy, HTuple* Phi, HTuple* Theta, HTuple* Tx, HTuple* Ty)

double HHomMat2D::HomMat2dToAffinePar(double* Sy, double* Phi, double* Theta, double* Tx, double* Ty) const

static void HOperatorSet.HomMat2dToAffinePar(HTuple homMat2D, out HTuple sx, out HTuple sy, out HTuple phi, out HTuple theta, out HTuple tx, out HTuple ty)

double HHomMat2D.HomMat2dToAffinePar(out double sy, out double phi, out double theta, out double tx, out double ty)

Description

hom_mat2d_to_affine_parhom_mat2d_to_affine_parHomMat2dToAffineParHomMat2dToAffineParHomMat2dToAffinePar computes the affine transformation parameters corresponding to the homogeneous 2D transformation matrix HomMat2DHomMat2DHomMat2DHomMat2DhomMat2D. The parameters SxSxSxSxsx and SySySySysy determine how the transformation scales the original x- and y-axes, respectively. The two scaling factors are always positive. The angle ThetaThetaThetaThetatheta describes whether the transformed coordinate axes are orthogonal (ThetaThetaThetaThetatheta = 0) or slanted. If , the transformation contains a reflection. The angle PhiPhiPhiPhiphi determines the rotation of the transformed x-axis with respect to the original x-axis. The parameters TxTxTxTxtx and TyTyTyTyty determine the translation of the two coordinate systems. The matrix HomMat2DHomMat2DHomMat2DHomMat2DhomMat2D can be constructed from the six transformation parameters by the following operator sequence:

hom_mat2d_identity (HomMat2DIdentity) hom_mat2d_scale (HomMat2DIdentity, Sx, Sy, 0, 0, HomMat2DScale) hom_mat2d_slant (HomMat2DScale, Theta, 'y', 0, 0, HomMat2DSlant) hom_mat2d_rotate (HomMat2DSlant, Phi, 0, 0, HomMat2DRotate) hom_mat2d_translate (HomMat2DRotate, Tx, Ty, HomMat2D)

This is equivalent to the following chain of transformation matrices:

Execution Information

Parameters

HomMat2DHomMat2DHomMat2DHomMat2DhomMat2D (input_control)  hom_mat2d HHomMat2D, HTupleHTupleHtuple (real) (double) (double) (double)

Input transformation matrix.

SxSxSxSxsx (output_control)  real HTupleHTupleHtuple (real) (double) (double) (double)

Scaling factor along the x direction.

SySySySysy (output_control)  real HTupleHTupleHtuple (real) (double) (double) (double)

Scaling factor along the y direction.

PhiPhiPhiPhiphi (output_control)  angle.rad HTupleHTupleHtuple (real) (double) (double) (double)

Rotation angle.

ThetaThetaThetaThetatheta (output_control)  angle.rad HTupleHTupleHtuple (real) (double) (double) (double)

Slant angle.

TxTxTxTxtx (output_control)  point.x HTupleHTupleHtuple (real) (double) (double) (double)

Translation along the x direction.

TyTyTyTyty (output_control)  point.y HTupleHTupleHtuple (real) (double) (double) (double)

Translation along the y direction.

Result

If the matrix HomMat2DHomMat2DHomMat2DHomMat2DhomMat2D is non-degenerate and represents an affine transformation (i.e., not a projective transformation), hom_mat2d_to_affine_parhom_mat2d_to_affine_parHomMat2dToAffineParHomMat2dToAffineParHomMat2dToAffinePar returns 2 (H_MSG_TRUE). Otherwise, an exception is raised.

Possible Predecessors

vector_to_hom_mat2dvector_to_hom_mat2dVectorToHomMat2dVectorToHomMat2dVectorToHomMat2d, vector_to_rigidvector_to_rigidVectorToRigidVectorToRigidVectorToRigid, vector_to_similarityvector_to_similarityVectorToSimilarityVectorToSimilarityVectorToSimilarity, vector_to_anisovector_to_anisoVectorToAnisoVectorToAnisoVectorToAniso, point_line_to_hom_mat2dpoint_line_to_hom_mat2dPointLineToHomMat2dPointLineToHomMat2dPointLineToHomMat2d

Possible Successors

hom_mat2d_translatehom_mat2d_translateHomMat2dTranslateHomMat2dTranslateHomMat2dTranslate, hom_mat2d_scalehom_mat2d_scaleHomMat2dScaleHomMat2dScaleHomMat2dScale, hom_mat2d_rotatehom_mat2d_rotateHomMat2dRotateHomMat2dRotateHomMat2dRotate, hom_mat2d_slanthom_mat2d_slantHomMat2dSlantHomMat2dSlantHomMat2dSlant

Module

Foundation