QAngle

From Valve Developer Community
< De
Jump to navigation Jump to search
English (en)Deutsch (de)中文 (zh)Translate (Translate)


QAngle ist eine C++-Klasse, die einen 3-dimensionalen eulerschen winkel darstellt, versetzt von der kardinale Y-Achse(en). Jeder QAngle beinhaltet 3 vec_t(en)-Rotationswerte:

  • X Steigung +runter/-hoch
  • Y Kursabweichung +links/-rechts
  • Z Drehung +rechts/-links

(-45,10,0) bedeutet 45 ° hoch, 10 ° links und 0 ° Drehung.

Tip.pngTipp:Die Achsen werden manchmal rX, rY und rZ genannt, um sie von Vektor(en).Achsen abzugrenzen.
Note.pngHinweis:Z ist auf +/-50 für die Spieleransicht begrenzt.

Deklaration

QAngle angMyAngle = QAngle(-45,10,0);
  • Man kann den X-, Y- und Z-Membervariablen separat zuweisen.
  • Der Präfix ang (oder manchmal nur a) identifiziert die Variable als Winkel ("angle").

Orientierun

Verwirrenderweise richtet sich keine Rotationsachse in Source nach den Positionsachsen(en)-Gegenstücken.

Noch verwirrender ist, dass Hammer die Rotationsachsen als Y, Z, X auflistet! Das ist gänzlich falsch, aber zum Glück sind das nur Beschriftungen: die Werte werden als ein einfacher String gespeichert (z. B. "-45 10 0") und durch das Spiel als rX rY rZ interpretiert.

Man sollte beachten, dass die Richtung eines Winkels durch seinen Bezugsrahmen bestimmt wird. Typischerweise wird es entweder die Welt oder eine Entity sein.

Aus Vektor konvertieren

Da es kein speziefisches Datenbeschreibungs-Schlüsselfeld(en) für Winkel gibt, wird ein in Hammer gewählter als Vektor(en) ankommen. Seine Komponenten werden einen Grad der Drehung repräsentieren und keine Koordinaten, also muss dies vorher angepasst werden:

QAngle angMyAngle = QAngle(vecFromHammer.x, vecFromHammer.y, vecFromHammer.z);

// Umwandlung zurück in einen Vektor, sofern notwendig
AngleVectors(angMyAngle, &vecFromHammer);

Siehe auch