hom_mat2d_to_affine_parT_hom_mat2d_to_affine_parHomMat2dToAffineParHomMat2dToAffineParhom_mat2d_to_affine_par (Operator)

Name

hom_mat2d_to_affine_parT_hom_mat2d_to_affine_parHomMat2dToAffineParHomMat2dToAffineParhom_mat2d_to_affine_par — 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)

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)

def hom_mat2d_to_affine_par(hom_mat_2d: Sequence[float]) -> Tuple[float, float, float, float, float, float]

Beschreibung

hom_mat2d_to_affine_parhom_mat2d_to_affine_parHomMat2dToAffineParHomMat2dToAffineParHomMat2dToAffineParhom_mat2d_to_affine_par berechnet aus einer homogenen 2D-Transformationsmatrix HomMat2DHomMat2DHomMat2DHomMat2DhomMat2Dhom_mat_2d 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 positiv. 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 HomMat2DHomMat2DHomMat2DHomMat2DhomMat2Dhom_mat_2d lässt sich mit folgender Operatorsequenz aus den sechs Transformationsparametern erzeugen:
hom_mat2d_identity(HomMat2DIdentity)hom_mat2d_identity(HomMat2DIdentity)HomMat2dIdentity(HomMat2DIdentity)HomMat2dIdentity(HomMat2DIdentity)HomMat2dIdentity(HomMat2DIdentity)hom_mat2d_identity(HomMat2DIdentity)
hom_mat2d_scale(HomMat2DIdentity, Sx, Sy, 0, 0, HomMat2DScale)hom_mat2d_scale(HomMat2DIdentity, Sx, Sy, 0, 0, HomMat2DScale)HomMat2dScale(HomMat2DIdentity, Sx, Sy, 0, 0, HomMat2DScale)HomMat2dScale(HomMat2DIdentity, Sx, Sy, 0, 0, HomMat2DScale)HomMat2dScale(HomMat2DIdentity, Sx, Sy, 0, 0, HomMat2DScale)hom_mat2d_scale(HomMat2DIdentity, Sx, Sy, 0, 0, HomMat2DScale)
hom_mat2d_slant(HomMat2DScale, Theta, 'y', 0, 0, HomMat2DSlant)hom_mat2d_slant(HomMat2DScale, Theta, "y", 0, 0, HomMat2DSlant)HomMat2dSlant(HomMat2DScale, Theta, "y", 0, 0, HomMat2DSlant)HomMat2dSlant(HomMat2DScale, Theta, "y", 0, 0, HomMat2DSlant)HomMat2dSlant(HomMat2DScale, Theta, "y", 0, 0, HomMat2DSlant)hom_mat2d_slant(HomMat2DScale, Theta, "y", 0, 0, HomMat2DSlant)
hom_mat2d_rotate(HomMat2DSlant, Phi, 0, 0, HomMat2DRotate)hom_mat2d_rotate(HomMat2DSlant, Phi, 0, 0, HomMat2DRotate)HomMat2dRotate(HomMat2DSlant, Phi, 0, 0, HomMat2DRotate)HomMat2dRotate(HomMat2DSlant, Phi, 0, 0, HomMat2DRotate)HomMat2dRotate(HomMat2DSlant, Phi, 0, 0, HomMat2DRotate)hom_mat2d_rotate(HomMat2DSlant, Phi, 0, 0, HomMat2DRotate)
hom_mat2d_translate(HomMat2DRotate, Tx, Ty, HomMat2D)hom_mat2d_translate(HomMat2DRotate, Tx, Ty, HomMat2D)HomMat2dTranslate(HomMat2DRotate, Tx, Ty, HomMat2D)HomMat2dTranslate(HomMat2DRotate, Tx, Ty, HomMat2D)HomMat2dTranslate(HomMat2DRotate, Tx, Ty, HomMat2D)hom_mat2d_translate(HomMat2DRotate, Tx, Ty, HomMat2D)

Dies entspricht der folgenden Kette von Transformationsmatrizen:

Ausführungsinformationen

Parameter

HomMat2DHomMat2DHomMat2DHomMat2DhomMat2Dhom_mat_2d (input_control)  hom_mat2d HHomMat2D, HTupleSequence[float]HTupleHtuple (real) (double) (double) (double)

Eingabe-Transformationsmatrix.

SxSxSxSxsxsx (output_control)  real HTuplefloatHTupleHtuple (real) (double) (double) (double)

Skalierung in x-Richtung.

SySySySysysy (output_control)  real HTuplefloatHTupleHtuple (real) (double) (double) (double)

Skalierung in y-Richtung.

PhiPhiPhiPhiphiphi (output_control)  angle.rad HTuplefloatHTupleHtuple (real) (double) (double) (double)

Rotationswinkel.

ThetaThetaThetaThetathetatheta (output_control)  angle.rad HTuplefloatHTupleHtuple (real) (double) (double) (double)

Scherungswinkel.

TxTxTxTxtxtx (output_control)  point.x HTuplefloatHTupleHtuple (real) (double) (double) (double)

Translation in x-Richtung.

TyTyTyTytyty (output_control)  point.y HTuplefloatHTupleHtuple (real) (double) (double) (double)

Translation in y-Richtung.

Ergebnis

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

Vorgänger

vector_to_hom_mat2dvector_to_hom_mat2dVectorToHomMat2dVectorToHomMat2dVectorToHomMat2dvector_to_hom_mat2d, vector_to_rigidvector_to_rigidVectorToRigidVectorToRigidVectorToRigidvector_to_rigid, vector_to_similarityvector_to_similarityVectorToSimilarityVectorToSimilarityVectorToSimilarityvector_to_similarity, vector_to_anisovector_to_anisoVectorToAnisoVectorToAnisoVectorToAnisovector_to_aniso, point_line_to_hom_mat2dpoint_line_to_hom_mat2dPointLineToHomMat2dPointLineToHomMat2dPointLineToHomMat2dpoint_line_to_hom_mat2d

Nachfolger

hom_mat2d_translatehom_mat2d_translateHomMat2dTranslateHomMat2dTranslateHomMat2dTranslatehom_mat2d_translate, hom_mat2d_scalehom_mat2d_scaleHomMat2dScaleHomMat2dScaleHomMat2dScalehom_mat2d_scale, hom_mat2d_rotatehom_mat2d_rotateHomMat2dRotateHomMat2dRotateHomMat2dRotatehom_mat2d_rotate, hom_mat2d_slanthom_mat2d_slantHomMat2dSlantHomMat2dSlantHomMat2dSlanthom_mat2d_slant

Modul

Foundation