Matrix

Inheritance: java.lang.Object

public class Matrix

Ersetzt die GDI+‑Matrix.


Die meisten Algorithmen stammen aus Sun’s AffineTransform.java. Java‑Namen für Matrix‑Elemente werden intern verwendet. Zuordnung von Java‑Namen zu .net‑Namen mit Beschreibung: m00 M11 Skalierung X m10 M12 Scherung Y m01 M21 Scherung X m11 M22 Skalierung Y m02 M31 Translation X m12 M32 Translation Y

Konstruktoren

KonstruktorBeschreibung
Matrix()Initialisiert eine neue Instanz der Matrix‑Klasse als Einheitsmatrix.
Matrix(float m11, float m12, float m21, float m22, float m31, float m32)Initialisiert eine neue Instanz der Matrix-Klasse.
Matrix(RectangleF rect, PointF[] plgpts)Initialisiert eine neue Instanz der Matrix-Klasse mit der geometrischen Transformation, die durch das angegebene Rechteck und das Array von Punkten definiert ist.
Matrix(Rectangle rect, Point[] plgpts)Initialisiert eine neue Instanz der Matrix-Klasse mit der geometrischen Transformation, die durch das angegebene Rechteck und das Array von Punkten definiert ist.
Matrix(Matrix origin)Erstellt eine Kopie der Matrix-Klasse.

Felder

FeldBeschreibung
TYPE_IDENTITYEine Identitätstransformation ist eine, bei der die Ausgabekoordinaten immer den Eingabekoordinaten entsprechen.
TYPE_TRANSLATIONEine Translation verschiebt die Koordinaten um einen konstanten Betrag in x und y, ohne die Länge oder den Winkel von Vektoren zu ändern.
TYPE_UNIFORM_SCALEEine einheitliche Skalierung multipliziert die Länge von Vektoren in sowohl x‑ als auch y‑Richtung um denselben Betrag, ohne den Winkel zwischen den Vektoren zu ändern.
TYPE_GENERAL_SCALEEine allgemeine Skalierung multipliziert die Länge von Vektoren um unterschiedliche Beträge in den x‑ und y‑Richtungen, ohne den Winkel zwischen senkrechten Vektoren zu ändern.
TYPE_MASK_SCALEDiese Konstante ist eine Bitmaske für beliebige der Skalierungs‑Flag‑Bits.
TYPE_FLIPDieses Flag‑Bit zeigt an, dass die durch dieses Objekt definierte Transformation eine Spiegelung um eine Achse durchführt, die das normalerweise rechtshändige Koordinatensystem in ein linkshändiges System ändert, zusätzlich zu den durch andere Flag‑Bits angegebenen Umwandlungen.
TYPE_QUADRANT_ROTATIONDieses Flag‑Bit zeigt an, dass die durch dieses Objekt definierte Transformation eine Quadrant‑Drehung um ein Vielfaches von 90 Grad ausführt, zusätzlich zu den durch andere Flag‑Bits angegebenen Umwandlungen.
TYPE_GENERAL_ROTATIONDieses Flag‑Bit zeigt an, dass die durch dieses Objekt definierte Transformation eine Drehung um einen beliebigen Winkel ausführt, zusätzlich zu den durch andere Flag‑Bits angegebenen Umwandlungen.
TYPE_MASK_ROTATIONDiese Konstante ist eine Bitmaske für beliebige der Rotations‑Flag‑Bits.
TYPE_GENERAL_TRANSFORMDiese Konstante zeigt an, dass die durch dieses Objekt definierte Transformation eine beliebige Umwandlung der Eingabekoordinaten vornimmt.

Methoden

MethodeBeschreibung
isEquals(Matrix a, Matrix b)Bestimmt, ob zwei Matrizen gleich sind.
getM11()Liefert das Matrix‑Element in der ersten Zeile, ersten Spalte.
getM12()Liefert das Matrix‑Element in der ersten Zeile, zweiten Spalte.
getM21()Liefert das Matrix‑Element in der zweiten Zeile, ersten Spalte.
getM22()Liefert das Matrix‑Element in der zweiten Zeile, zweiten Spalte.
getM31()Liefert das Matrix‑Element in der dritten Zeile, ersten Spalte.
getM32()Liefert das Matrix‑Element in der dritten Zeile, ersten Spalte.
toString()Gibt einen String zurück, der diese Instanz darstellt.
getElements()Liefert eine Kopie der Matrix‑Elemente.
transformPoints(PointF[] points)Wendet die geometrische Transformation, die durch diese Matrix dargestellt wird, auf ein angegebenes Array von Punkten an.
scale(float scaleX, float scaleY, int order)Wendet den angegebenen Skalierungsvektor (scaleX und scaleY) auf diese Matrix unter Verwendung der angegebenen Reihenfolge an.
scale(float sx, float sy)Wendet den angegebenen Skalierungsvektor (scaleX und scaleY) auf diese Matrix unter Verwendung der (Standard‑)Prepend‑Reihenfolge an.
translate(float offsetX, float offsetY, int order)Wendet den angegebenen Translationsvektor auf diese Matrix in der angegebenen Reihenfolge an.
translate(float tx, float ty)Wendet den angegebenen Translationsvektor auf diese Matrix unter Verwendung der (Standard‑)Prepend‑Reihenfolge an.
multiply(Matrix tTx, int order)Multipliziert diese Matrix mit der im Parameter matrix angegebenen Matrix und in der im Parameter order angegebenen Reihenfolge.
multiply(Matrix tTx)Multipliziert diese Matrix mit der im Parameter matrix angegebenen Matrix unter Verwendung der (Standard‑)Prepend‑Reihenfolge.
rotate(float angle, int order)Wendet eine im Parameter angle angegebene Drehung im Uhrzeigersinn um den Ursprung (null x‑ und y‑Koordinaten) für diese Matrix in der angegebenen Reihenfolge an.
rotate(float angle)Wendet eine im Parameter angle angegebene Drehung im Uhrzeigersinn um den Ursprung (null x‑ und y‑Koordinaten) für diese Matrix in der Standard‑(Prepend‑)Reihenfolge an.
rotateAt(float angle, PointF point, int order)Wendet eine Drehung im Uhrzeigersinn um den angegebenen Punkt auf diese Matrix in der angegebenen Reihenfolge an.
rotateAt(float angle, PointF point)Wendet eine Drehung im Uhrzeigersinn um den angegebenen Punkt auf diese Matrix in der Standard‑(Prepend‑)Reihenfolge an.
reset()Setzt diese Matrix zurück, sodass sie die Elemente der Einheitsmatrix enthält.
hashCode()Gibt einen Hashcode für diese Instanz zurück.
equals(Object obj)Bestimmt, ob das angegebene Object gleich dieser Instanz ist.
isIdentity()Gibt true zurück, wenn dieses AffineTransform eine Identitätstransformation ist.

Matrix()

public Matrix()

Initialisiert eine neue Instanz der Matrix‑Klasse als Einheitsmatrix.

Matrix(float m11, float m12, float m21, float m22, float m31, float m32)

public Matrix(float m11, float m12, float m21, float m22, float m31, float m32)

Initialisiert eine neue Instanz der Matrix-Klasse.

Parameters:

ParameterTypBeschreibung
m11floatm00 M11 Skalierung X
m12floatm10 M12 Scheren Y
m21floatm01 M21 Scheren X
m22floatm11 M22 Skalierung Y
m31floatm02 M31 Translation X
m32floatm12 M32 Translation Y

Matrix(RectangleF rect, PointF[] plgpts)

public Matrix(RectangleF rect, PointF[] plgpts)

Initialisiert eine neue Instanz der Matrix-Klasse mit der geometrischen Transformation, die durch das angegebene Rechteck und das Array von Punkten definiert ist.

Parameters:

ParameterTypBeschreibung
rectRectangleFEine RectangleF-Struktur, die das zu transformierende Rechteck darstellt.
plgptsPointF[]Ein Array aus drei PointF-Strukturen, das die Punkte eines Parallelogramms darstellt, zu dem die oberen linken, oberen rechten und unteren linken Ecken des Rechtecks transformiert werden sollen. Die untere rechte Ecke des Parallelogramms wird durch die ersten drei Ecken impliziert.

Matrix(Rectangle rect, Point[] plgpts)

public Matrix(Rectangle rect, Point[] plgpts)

Initialisiert eine neue Instanz der Matrix-Klasse mit der geometrischen Transformation, die durch das angegebene Rechteck und das Array von Punkten definiert ist.

Parameters:

ParameterTypBeschreibung
rectRectangleEine Rectangle-Struktur, die das zu transformierende Rechteck darstellt.
plgptsPoint[]Ein Array aus drei Point-Strukturen, das die Punkte eines Parallelogramms darstellt, zu dem die oberen linken, oberen rechten und unteren linken Ecken des Rechtecks transformiert werden sollen. Die untere rechte Ecke des Parallelogramms wird durch die ersten drei Ecken impliziert.

Matrix(Matrix origin)

public Matrix(Matrix origin)

Erstellt eine Kopie der Matrix-Klasse.

Parameters:

ParameterTypBeschreibung
originMatrixEine Basis-Matrix zum Kopieren.

TYPE_IDENTITY

public static final int TYPE_IDENTITY

Eine Identitätstransformation ist eine, bei der die Ausgabekoordinaten stets mit den Eingabekoordinaten übereinstimmen. Wenn diese Transformation etwas anderes als die Identitätstransformation ist, wird der Typ entweder die Konstante GENERAL_TRANSFORM sein oder eine Kombination der entsprechenden Flag‑Bits für die verschiedenen Koordinatenkonvertierungen, die diese Transformation durchführt.

TYPE_TRANSLATION

public static final int TYPE_TRANSLATION

Eine Translation verschiebt die Koordinaten um einen konstanten Betrag in x und y, ohne die Länge oder den Winkel von Vektoren zu ändern.

TYPE_UNIFORM_SCALE

public static final int TYPE_UNIFORM_SCALE

Eine einheitliche Skalierung multipliziert die Länge von Vektoren in sowohl x‑ als auch y‑Richtung um denselben Betrag, ohne den Winkel zwischen den Vektoren zu ändern. Dieses Flag‑Bit ist wechselseitig exklusiv zum Flag TypeGeneralScale.

TYPE_GENERAL_SCALE

public static final int TYPE_GENERAL_SCALE

Eine allgemeine Skalierung multipliziert die Länge von Vektoren in x‑ und y‑Richtung um unterschiedliche Beträge, ohne den Winkel zwischen senkrechten Vektoren zu ändern. Dieses Flag‑Bit ist wechselseitig exklusiv zum Flag TypeUniformScale.

TYPE_MASK_SCALE

public static final int TYPE_MASK_SCALE

Diese Konstante ist eine Bitmaske für beliebige der Skalierungs‑Flag‑Bits.

TYPE_FLIP

public static final int TYPE_FLIP

Dieses Flag‑Bit zeigt an, dass die von diesem Objekt definierte Transformation eine Spiegelbild‑Umkehr um eine Achse durchführt, die das normalerweise rechtshändige Koordinatensystem in ein linkshändiges System umwandelt, zusätzlich zu den von anderen Flag‑Bits angegebenen Konvertierungen. Ein rechtshändiges Koordinatensystem ist eines, bei dem die positive X‑Achse sich gegen den Uhrzeigersinn dreht, um die positive Y‑Achse zu überlagern, ähnlich der Richtung, in die sich die Finger Ihrer rechten Hand krümmen, wenn Sie Ihren Daumen frontal betrachten. Ein linkshändiges Koordinatensystem ist eines, bei dem die positive X‑Achse sich im Uhrzeigersinn dreht, um die positive Y‑Achse zu überlagern, ähnlich der Richtung, in die sich die Finger Ihrer linken Hand krümmen. Es gibt keinen mathematischen Weg, den Winkel der ursprünglichen Umkehr‑ oder Spiegelungs­transformation zu bestimmen, da alle Umkehrwinkel bei einer geeigneten nachfolgenden Rotation identisch sind. HINWEIS: TypeFlip wurde hinzugefügt, nachdem GENERAL_TRANSFORM bereits öffentlich verbreitet war, und die Flag‑Bits konnten nicht mehr bequem neu nummeriert werden, ohne eine binäre Inkompatibilität im externen Code zu verursachen.

TYPE_QUADRANT_ROTATION

public static final int TYPE_QUADRANT_ROTATION

Dieses Flag‑Bit zeigt an, dass die von diesem Objekt definierte Transformation eine Quadrant‑Drehung um ein Vielfaches von 90 Grad durchführt, zusätzlich zu den von anderen Flag‑Bits angegebenen Konvertierungen. Eine Drehung ändert die Winkel von Vektoren um denselben Betrag, unabhängig von der ursprünglichen Richtung des Vektors, und ohne die Länge des Vektors zu verändern. Dieses Flag‑Bit ist wechselseitig exklusiv zum Flag TypeGeneralRotation.

TYPE_GENERAL_ROTATION

public static final int TYPE_GENERAL_ROTATION

Dieses Flag‑Bit zeigt an, dass die durch dieses Objekt definierte Transformation eine Drehung um einen beliebigen Winkel zusätzlich zu den durch andere Flag‑Bits angegebenen Umwandlungen durchführt. Eine Drehung ändert die Winkel von Vektoren um denselben Betrag, unabhängig von der ursprünglichen Richtung des Vektors und ohne die Länge des Vektors zu verändern. Dieses Flag‑Bit ist wechselseitig ausschließend mit dem

TYPE_MASK_ROTATION

public static final int TYPE_MASK_ROTATION

Diese Konstante ist eine Bitmaske für beliebige der Rotations‑Flag‑Bits.

TYPE_GENERAL_TRANSFORM

public static final int TYPE_GENERAL_TRANSFORM

Diese Konstante gibt an, dass die durch dieses Objekt definierte Transformation eine beliebige Umwandlung der Eingabekoordinaten durchführt. Wenn diese Transformation durch eine der oben genannten Konstanten klassifiziert werden kann, ist der Typ entweder die Konstante TypeIdentity oder eine Kombination der entsprechenden Flag‑Bits für die verschiedenen Koordinatenumwandlungen, die diese Transformation ausführt.

isEquals(Matrix a, Matrix b)

public static boolean isEquals(Matrix a, Matrix b)

Bestimmt, ob zwei Matrizen gleich sind.

Parameters:

ParameterTypBeschreibung
aMatrixDie erste Matrix zum Vergleich.
bMatrixDie zweite Matrix zum Vergleich.

Returns: boolean - Wahr, wenn Matrizen gleich sind.

getM11()

public final float getM11()

Liefert das Matrixelement in der ersten Zeile, ersten Spalte. Stellt die Skalierung entlang der X‑Achse dar.

Returns: float - das Matrixelement in der ersten Zeile, ersten Spalte.

getM12()

public final float getM12()

Liefert das Matrixelement in der ersten Zeile, zweiten Spalte. Stellt die Scherung entlang der Y‑Achse dar.

Returns: float - das Matrixelement in der ersten Zeile, zweiten Spalte.

getM21()

public final float getM21()

Liefert das Matrixelement in der zweiten Zeile, ersten Spalte. Stellt die Scherung entlang der X‑Achse dar.

Returns: float - das Matrixelement in der zweiten Zeile, ersten Spalte.

getM22()

public final float getM22()

Liefert das Matrixelement in der zweiten Zeile, zweiten Spalte. Stellt die Skalierung entlang der Y‑Achse dar.

Returns: float - das Matrixelement in der zweiten Zeile, zweiten Spalte.

getM31()

public final float getM31()

Liefert das Matrixelement in der dritten Zeile, ersten Spalte. Stellt die Translation entlang der X‑Achse dar.

Returns: float - das Matrixelement in der dritten Zeile, ersten Spalte.

getM32()

public final float getM32()

Liefert das Matrixelement in der dritten Zeile, ersten Spalte. Stellt die Translation entlang der Y‑Achse dar.

Returns: float - das Matrixelement in der dritten Zeile, ersten Spalte.

toString()

public String toString()

Gibt einen String zurück, der diese Instanz darstellt.

Returns: java.lang.String - Ein String, der diese Instanz darstellt.

getElements()

public final float[] getElements()

Liefert eine Kopie der Matrix‑Elemente.

Returns: float[] - Eine Kopie der Matrixelemente.

transformPoints(PointF[] points)

public final void transformPoints(PointF[] points)

Wendet die geometrische Transformation, die durch diese Matrix dargestellt wird, auf ein angegebenes Array von Punkten an.

Parameters:

ParameterTypBeschreibung
pointsPointF[]Die Punkte.

scale(float scaleX, float scaleY, int order)

public final void scale(float scaleX, float scaleY, int order)

Wendet den angegebenen Skalierungsvektor (scaleX und scaleY) auf diese Matrix unter Verwendung der angegebenen Reihenfolge an.

Parameters:

ParameterTypBeschreibung
scaleXfloatDie Skalierung X.
scaleYfloatDie Skalierung Y.
orderintDie Reihenfolge.

scale(float sx, float sy)

public final void scale(float sx, float sy)

Wendet den angegebenen Skalierungsvektor (scaleX und scaleY) auf diese Matrix unter Verwendung der (Standard‑)Prepend‑Reihenfolge an.

Parameters:

ParameterTypBeschreibung
sxfloatDer sx. Der sx. Der sx.
syfloatDer sy. Der sy. Der sy.

translate(float offsetX, float offsetY, int order)

public final void translate(float offsetX, float offsetY, int order)

Wendet den angegebenen Translationsvektor auf diese Matrix in der angegebenen Reihenfolge an.

Parameters:

ParameterTypBeschreibung
offsetXfloatDer offset X.
offsetYfloatDer offset Y.
orderintDie Reihenfolge.

translate(float tx, float ty)

public final void translate(float tx, float ty)

Wendet den angegebenen Translationsvektor auf diese Matrix unter Verwendung der (Standard‑)Prepend‑Reihenfolge an.

Parameters:

ParameterTypBeschreibung
txfloatDer tx. Der tx. Der tx.
tyfloatDer ty. Der ty. Der ty.

multiply(Matrix tTx, int order)

public final void multiply(Matrix tTx, int order)

Multipliziert diese Matrix mit der im Parameter matrix angegebenen Matrix und in der im Parameter order angegebenen Reihenfolge.

Parameters:

ParameterTypBeschreibung
tTxMatrixDer tx. Der tx. Der tx.
orderintDie Reihenfolge. Die Reihenfolge. Die Reihenfolge.

multiply(Matrix tTx)

public final void multiply(Matrix tTx)

Multipliziert diese Matrix mit der im Parameter matrix angegebenen Matrix unter Verwendung der (Standard‑)Prepend‑Reihenfolge.

Parameters:

ParameterTypBeschreibung
tTxMatrixDie Matrix, mit der multipliziert wird.

rotate(float angle, int order)

public final void rotate(float angle, int order)

Wendet eine im Parameter angle angegebene Drehung im Uhrzeigersinn um den Ursprung (null x‑ und y‑Koordinaten) für diese Matrix in der angegebenen Reihenfolge an.

Parameters:

ParameterTypBeschreibung
anglefloatDer Rotationswinkel.
orderintDie Matrixreihenfolge.

rotate(float angle)

public final void rotate(float angle)

Wendet eine im Parameter angle angegebene Drehung im Uhrzeigersinn um den Ursprung (null x‑ und y‑Koordinaten) für diese Matrix in der Standard‑(Prepend‑)Reihenfolge an.

Parameters:

ParameterTypBeschreibung
anglefloatDer Rotationswinkel.

rotateAt(float angle, PointF point, int order)

public final void rotateAt(float angle, PointF point, int order)

Wendet eine Drehung im Uhrzeigersinn um den angegebenen Punkt auf diese Matrix in der angegebenen Reihenfolge an.

Parameters:

ParameterTypBeschreibung
anglefloatDer Winkel.
pointPointFDer Punkt.
orderintDie Reihenfolge.

rotateAt(float angle, PointF point)

public final void rotateAt(float angle, PointF point)

Wendet eine Drehung im Uhrzeigersinn um den angegebenen Punkt auf diese Matrix in der Standard‑(Prepend‑)Reihenfolge an.

Parameters:

ParameterTypBeschreibung
anglefloatDer Winkel.
pointPointFDer Punkt.

reset()

public final void reset()

Setzt diese Matrix zurück, sodass sie die Elemente der Einheitsmatrix enthält.

hashCode()

public int hashCode()

Gibt einen Hashcode für diese Instanz zurück.

Returns: int – Ein Hashcode für diese Instanz, geeignet für den Einsatz in Hash‑Algorithmen und Datenstrukturen wie einer Hashtabelle.

equals(Object obj)

public boolean equals(Object obj)

Bestimmt, ob das angegebene Object gleich dieser Instanz ist.

Parameters:

ParameterTypBeschreibung
objjava.lang.ObjectDas Object zum Vergleich mit dieser Instanz.

Returns: boolean - true wenn das angegebene Object dieser Instanz gleich ist; andernfalls false.

isIdentity()

public boolean isIdentity()

Gibt true zurück, wenn dieses AffineTransform eine Identitätstransformation ist.

Returns: boolean - true wenn dieses AffineTransform eine Identitätstransformation ist; false andernfalls.