KlassenKlassenKlassenKlassen | | | | Operatoren

hom_mat2d_to_affine_parT_hom_mat2d_to_affine_parHomMat2dToAffineParhom_mat2d_to_affine_parHomMat2dToAffineParHomMat2dToAffinePar (Operator)

Name

hom_mat2d_to_affine_parT_hom_mat2d_to_affine_parHomMat2dToAffineParhom_mat2d_to_affine_parHomMat2dToAffineParHomMat2dToAffinePar — Berechnet die affinen Transformationsparameter aus einer homogenen 2D-Transformationsmatrix.

Signatur

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)

Herror hom_mat2d_to_affine_par(const HTuple& HomMat2D, double* Sx, double* Sy, double* Phi, double* Theta, double* Tx, double* 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

void HOperatorSetX.HomMat2dToAffinePar(
[in] VARIANT HomMat2d, [out] VARIANT* Sx, [out] VARIANT* Sy, [out] VARIANT* Phi, [out] VARIANT* Theta, [out] VARIANT* Tx, [out] VARIANT* Ty)

double HHomMat2DX.HomMat2dToAffinePar(
[out] double* Sy, [out] double* Phi, [out] double* Theta, [out] double* Tx, [out] double* Ty)

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)

Beschreibung

hom_mat2d_to_affine_parhom_mat2d_to_affine_parHomMat2dToAffineParhom_mat2d_to_affine_parHomMat2dToAffineParHomMat2dToAffinePar berechnet aus einer homogenen 2D-Transformationsmatrix HomMat2DHomMat2DHomMat2DHomMat2DHomMat2DhomMat2D die zugehörigen affinen Transformationsparameter. Die Parameter SxSxSxSxSxsx und SySySySySysy geben an, wie stark die ursprünglichen x- und y-Achsen von der Transformation skaliert werden. Die beiden Skalierungsfaktoren sind immer positv. Der Winkel ThetaThetaThetaThetaThetatheta beschreibt, ob die transformierten Koordinatenachsen orthogonal sind (ThetaThetaThetaThetaThetatheta = 0) oder ob die y-Achse geschert ist. Falls , enthält die Transformation eine Spiegelung. Der Winkel PhiPhiPhiPhiPhiphi beschreibt die Rotation der x-Achse des transformierten Koordinatensystems gegenüber der x-Achse des ursprünglichen Koordinatensystems. Die Parameter TxTxTxTxTxtx und TyTyTyTyTyty beschreiben die Verschiebung der beiden Koordinatensysteme. Die Matrix HomMat2DHomMat2DHomMat2DHomMat2DHomMat2DhomMat2D lässt sich mit folgender Operatorsequenz aus den sechs Transformationsparametern erzeugen:

  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)
  

Dies entspricht der folgenden Kette von Transformationsmatrizen:

Parallelisierung

Parameter

HomMat2DHomMat2DHomMat2DHomMat2DHomMat2DhomMat2D (input_control)  hom_mat2d HHomMat2D, HTupleHTupleHTupleHHomMat2DX, VARIANTHtuple (real) (double) (double) (double) (double) (double)

Eingabe-Transformationsmatrix.

SxSxSxSxSxsx (output_control)  real HTupleHTupleHTupleVARIANTHtuple (real) (double) (double) (double) (double) (double)

Skalierung in x-Richtung.

SySySySySysy (output_control)  real HTupleHTupleHTupleVARIANTHtuple (real) (double) (double) (double) (double) (double)

Skalierung in y-Richtung.

PhiPhiPhiPhiPhiphi (output_control)  angle.rad HTupleHTupleHTupleVARIANTHtuple (real) (double) (double) (double) (double) (double)

Rotationswinkel.

ThetaThetaThetaThetaThetatheta (output_control)  angle.rad HTupleHTupleHTupleVARIANTHtuple (real) (double) (double) (double) (double) (double)

Scherungswinkel.

TxTxTxTxTxtx (output_control)  point.x HTupleHTupleHTupleVARIANTHtuple (real) (double) (double) (double) (double) (double)

Translation in x-Richtung.

TyTyTyTyTyty (output_control)  point.y HTupleHTupleHTupleVARIANTHtuple (real) (double) (double) (double) (double) (double)

Translation in y-Richtung.

Ergebnis

Falls die Matrix HomMat2DHomMat2DHomMat2DHomMat2DHomMat2DhomMat2D nicht degeneriert ist und eine affine Abbildung darstellt (d.h. keine projektive Abbildung), liefert hom_mat2d_to_affine_parhom_mat2d_to_affine_parHomMat2dToAffineParhom_mat2d_to_affine_parHomMat2dToAffineParHomMat2dToAffinePar den Wert 2 (H_MSG_TRUE) zurück. Ansonsten wird eine Ausnahmebehandlung durchgeführt.

Vorgänger

vector_to_hom_mat2dvector_to_hom_mat2dVectorToHomMat2dvector_to_hom_mat2dVectorToHomMat2dVectorToHomMat2d, vector_to_rigidvector_to_rigidVectorToRigidvector_to_rigidVectorToRigidVectorToRigid, vector_to_similarityvector_to_similarityVectorToSimilarityvector_to_similarityVectorToSimilarityVectorToSimilarity, vector_to_anisovector_to_anisoVectorToAnisovector_to_anisoVectorToAnisoVectorToAniso, point_line_to_hom_mat2dpoint_line_to_hom_mat2dPointLineToHomMat2dpoint_line_to_hom_mat2dPointLineToHomMat2dPointLineToHomMat2d

Nachfolger

hom_mat2d_translatehom_mat2d_translateHomMat2dTranslatehom_mat2d_translateHomMat2dTranslateHomMat2dTranslate, hom_mat2d_scalehom_mat2d_scaleHomMat2dScalehom_mat2d_scaleHomMat2dScaleHomMat2dScale, hom_mat2d_rotatehom_mat2d_rotateHomMat2dRotatehom_mat2d_rotateHomMat2dRotateHomMat2dRotate, hom_mat2d_slanthom_mat2d_slantHomMat2dSlanthom_mat2d_slantHomMat2dSlantHomMat2dSlant

Modul

Foundation


KlassenKlassenKlassenKlassen | | | | Operatoren