QAngle: Difference between revisions
m (Added todo for non-existant pages. Remove the link all together if needed) |
TomEdwards (talk | contribs) |
||
Line 23: | Line 23: | ||
== Orientation == | == Orientation == | ||
Confusingly, Source's | Confusingly, none of Source's rotation axes align with their [[Coordinates|position axes]] counterparts. | ||
Even ''more'' confusingly, Hammer lists rotation axes as Y, Z, X! This is completely wrong, but luckily they are just labels: the values are stored in a single string (e.g. "-45 10 0") and interpreted | Even ''more'' confusingly, Hammer lists rotation axes as Y, Z, X! This is completely wrong, but luckily they are just labels: the values are stored in a single string (e.g. "-45 10 0") and interpreted by the game as rX rY rZ. | ||
Remember that the effective direction of an angle is determined by its frame of reference. Typically, it will either be aligned to the world or to an entity. | |||
== Converting from Vector == | == Converting from Vector == |
Revision as of 14:06, 22 June 2011
QAngle is a C++ class that represents a three-dimensional Euler angle, offset from the cardinal Z axis. Each QAngle contains three vec_t rotation values:
- X pitch +down/-up
- Y yaw +left/-right
- Z roll +right/-left
(-45,10,0)
means 45° up, 10° left and 0° roll.


Declaration
QAngle angMyAngle = QAngle(-45,10,0);
- The classname QAngle is case-sensitive.
- You could also assign to the X, Y and Z member variables separately.
- The prefix
ang
(or sometimes justa
) identifies the variable as an angle.
Orientation
Confusingly, none of Source's rotation axes align with their position axes counterparts.
Even more confusingly, Hammer lists rotation axes as Y, Z, X! This is completely wrong, but luckily they are just labels: the values are stored in a single string (e.g. "-45 10 0") and interpreted by the game as rX rY rZ.
Remember that the effective direction of an angle is determined by its frame of reference. Typically, it will either be aligned to the world or to an entity.
Converting from Vector
As there is no specific datadesc keyfield for angles, one chosen in Hammer will arrive as a vector. Its ordinates will represent degrees of rotation and not coordinates so it must be fixed up before use:
QAngle angMyAngle = QAngle(vecFromHammer.x, vecFromHammer.y, vecFromHammer.z);
// Conversion back to a vector, if required
AngleVectors(angMyAngle, &vecFromHammer);