matrix3x4_t

From Valve Developer Community
< De
Revision as of 18:01, 14 May 2011 by Sacaldur (talk | contribs) (Created page with '{{otherlang2 |en=Matrix3x4_t }} {{toc-right}} '''<code>matrix3x4_t</code>''' ist eine C++ Klasse, die eine Matrix repräsentiert: ein mathema…')
(diff) ← Older revision | Latest revision (diff) | Newer revision → (diff)
Jump to navigation Jump to search

Template:Otherlang2

matrix3x4_t ist eine C++ Klasse, die eine Matrix repräsentiert: ein mathematisches Konstrukt, welches Vektoren erlaubt transformiert zu werden.

Matrizen werden hauptsächlich zum rotieren von Vektoren benutzt, weil für Verschiebung und Skalierung Vektorenaddition und -multiplication sorgen. eine einzelne Matrix kann eine Transformation in allen 3 Modi speichern, was sie nützlich in Transformations-intensiven Operationen wie Vertex-Renderung und 3D Ansichtseinrichtung.

Zu erledigen: Was ist VMatrix und welche Beziehung hat es zu dieser Klasse? (siehe Originaltext)

Funktionen

Generation

Matrixgeneration sollte am Besten bei den Source vorgefertigten Funktionen belassen werden:

void AngleMatrix( QAngle angle, matrix_3x4_t& out ); // Rotation; kann auch Quaternionen oder Bogenmaße verwenden.
void PositionMatrix( Vector position, matrix3x4_t& out ); // Verschiebung
void AngleMatrix( QAngle angle, Vector position, matrix3x4_t& out ); // Rotation + Verschiebung
void SetScaleMatrix( float scale, matrix3x4_t& out ); // Skalierung

MatrixMultiply() wird zum kombinieren zweier Matrizen in eine verwendet. Man kann das beliebig oft machen.

Anwendung

Template:Tip:de

Die mathematische Notation für eine Matrixtransform ist (vector * matrix). Source unterstützt diese Syntax nicht obwohl es trivial wäre, es hinzuzufügen, wenn man wollte und bietet statt dessen diese Funktionen an:

void VectorTransform( Vector in1, matrix3x4_t in2, Vector& out );
void VectorITransform( Vector in1, matrix3x4_t in2, Vector& out ); // 'Gegenteil' des oberen

Es gibt eine Überladung von VectorRotate()</code, die ein matrix3x4_t akzeptiert. Es scheitnt sich genauso zu verhalten wie VectorTransform().

Anderes / Nützliches

void MatrixAngles()
void MatrixPosition()
void MatrixVectors()
Extrahiert Winkel und Vektoren aus einer Matrix. MatrixAngles() hat viele Überladungen. Es gibt keinen Weg, die Skalierung zu extrahieren.
void MatrixTranspose()
Transponiert eine Matrix.
Zu erledigen: Wofür ist das gut?
void MatrixInvert()
Kehrt eine Matrix um, indem es es in die gegenüberliegenden Richtungen transformiert. Man kann auch VectorITransform() verwenden, um die Matrix anzuwenden.
bool MatricesAreEqual()
An Stelle von (matrix1 == matrix2).
void MatrixCopy()
Bestätigen:Anstelle von (matrix1 = matrix2).

Siehe auch