De/QAngle: Difference between revisions
m (-Using L template for links) |
|||
Line 3: | Line 3: | ||
{{toc-right}} | {{toc-right}} | ||
'''QAngle''' ist eine C++-Klasse, die einen 3-dimensionalen eulerschen winkel darstellt, versetzt von der kardinale | '''QAngle''' ist eine C++-Klasse, die einen 3-dimensionalen eulerschen winkel darstellt, versetzt von der kardinale {{L|Coordinates|Y-Achse}}. Jeder QAngle beinhaltet 3 {{L|vec_t}}-Rotationswerte: | ||
* '''X''' Steigung +runter/-hoch | * '''X''' Steigung +runter/-hoch | ||
Line 11: | Line 11: | ||
<code>(-45,10,0)</code> bedeutet 45 ° hoch, 10 ° links und 0 ° Drehung. | <code>(-45,10,0)</code> bedeutet 45 ° hoch, 10 ° links und 0 ° Drehung. | ||
{{tip|Die Achsen werden manchmal rX, rY und rZ genannt, um sie von | {{tip|Die Achsen werden manchmal rX, rY und rZ genannt, um sie von {{L|vector|Vektor}}.Achsen abzugrenzen.}} | ||
{{Note|Z ist auf +/-50 für die Spieleransicht begrenzt.}} | {{Note|Z ist auf +/-50 für die Spieleransicht begrenzt.}} | ||
Line 24: | Line 24: | ||
== Orientierun == | == Orientierun == | ||
Verwirrenderweise richtet sich keine Rotationsachse in Source nach den | Verwirrenderweise richtet sich keine Rotationsachse in Source nach den {{L|Coordinates|Positionsachsen}}-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. | ''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. | ||
Line 32: | Line 32: | ||
== Aus Vektor konvertieren == | == Aus Vektor konvertieren == | ||
Da es kein speziefisches | Da es kein speziefisches {{L|Data Descriptions#DEFINE_FIELD|Datenbeschreibungs-Schlüsselfeld}} für Winkel gibt, wird ein in Hammer gewählter als {{L|vector|Vektor}} ankommen. Seine Komponenten werden einen Grad der Drehung repräsentieren und keine Koordinaten, also muss dies vorher angepasst werden: | ||
<source lang=cpp> | <source lang=cpp> | ||
Line 43: | Line 43: | ||
* [[Wikipedia:Yaw, pitch, and roll]] | * [[Wikipedia:Yaw, pitch, and roll]] | ||
* {{todo:de| | * {{todo:de|{{L|getpos|getpos und setang}}}} | ||
* | * {{L|Vector|Vektor}} | ||
* | * {{L|AngleVectors()|<code>AngleVectors()</code> / <code>VectorAngles()</code>}} |
Revision as of 08:19, 11 July 2024
QAngle ist eine C++-Klasse, die einen 3-dimensionalen eulerschen winkel darstellt, versetzt von der kardinale Y-Achse . Jeder QAngle beinhaltet 3 vec_t -Rotationswerte:
- X Steigung +runter/-hoch
- Y Kursabweichung +links/-rechts
- Z Drehung +rechts/-links
(-45,10,0)
bedeutet 45 ° hoch, 10 ° links und 0 ° Drehung.


Deklaration
QAngle angMyAngle = QAngle(-45,10,0);
- Man kann den X-, Y- und Z-Membervariablen separat zuweisen.
- Der Präfix
ang
(oder manchmal nura
) identifiziert die Variable als Winkel ("angle").
Orientierun
Verwirrenderweise richtet sich keine Rotationsachse in Source nach den Positionsachsen -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 für Winkel gibt, wird ein in Hammer gewählter als Vektor 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);