R
Bei meinem Problem ging es aber nicht um Rotationsachsen und dergleichen, ich wollte einfach einen "Forward-Vector" haben. In meinem Beispiel kommt bei dem Euler-Angle (0,0,0) ein Vektor raus der entlang der positiven X-Achse zeigt. Dies ist allerdings mit einem Informationsverlust verbunden, da sich aus dem Richtungsvektor die Orientierung nur unvollständig wiederherstellen lässt.
Damit hier auch eine vollständige Lösung steht, hier der Code für ein Rechtshändiges Koordinatensystem, Referenzvektor (1,0,0) und Euler-Definition Z-Y'-X'':
inline void AngleToVector( const Vector3d &Angle, Vector3d &Vec )
{
float s2, c2, s3, c3;
s3 = SIN( Angle.x );
c3 = COS( Angle.x );
s2 = SIN( Angle.y );
c2 = COS( Angle.y );
Vec.x = c2 * c3;
Vec.y = c2 * s3;
Vec.z = -s2;
}
Wenn man will kann man noch die (SSE ?) Operation SinCos einfließen lassen welche IMHO Sinus und Cosinus mit einer Operation berechnet.