diff --git a/VistaCoreLibs/VistaBase/VistaQuaternion.cpp b/VistaCoreLibs/VistaBase/VistaQuaternion.cpp index 8f19f2af10c7f5a1d2f439df08a52153d1ae2dab..513da33b71eaffebe92b1217c5624048d514be8b 100644 --- a/VistaCoreLibs/VistaBase/VistaQuaternion.cpp +++ b/VistaCoreLibs/VistaBase/VistaQuaternion.cpp @@ -318,7 +318,12 @@ VistaVector3D VistaQuaternion::GetUpDir() const return Rotate( Vista::UpVector ); } -void VistaQuaternion::SetFromViewAndUpDir( const VistaVector3D& v3View, const VistaVector3D& v3Up ) +VistaVector3D VistaQuaternion::GetRightDir() const +{ + return Rotate( Vista::RightVector ); +} + +void VistaQuaternion::SetFromViewAndUpDir(const VistaVector3D& v3View, const VistaVector3D& v3Up) { VistaVector3D v3ZAxis = -v3View; VistaVector3D v3XAxis = v3Up.Cross( v3ZAxis ); diff --git a/VistaCoreLibs/VistaBase/VistaQuaternion.h b/VistaCoreLibs/VistaBase/VistaQuaternion.h index a80450b95c23e7706000f49c20b9942cd41cbe5d..f49bf90172421c2acf9838e5c29f31d88b9a15cd 100644 --- a/VistaCoreLibs/VistaBase/VistaQuaternion.h +++ b/VistaCoreLibs/VistaBase/VistaQuaternion.h @@ -135,6 +135,7 @@ public: VistaVector3D GetViewDir() const; // this.Rotate( -Z-dir ) VistaVector3D GetUpDir() const; // this.Rotate( y-dir ) + VistaVector3D GetRightDir() const; // this.Rotate( x-dir ) void SetFromViewAndUpDir( const VistaVector3D& v3View, const VistaVector3D& v3Up ); const VistaQuaternion& operator+=( const VistaQuaternion& v3Other ); diff --git a/VistaCoreLibs/VistaBase/VistaVector3D.h b/VistaCoreLibs/VistaBase/VistaVector3D.h index 419339c343f1050fd8d44cff13544469f0a8d286..856dd6682c9c28a1b081a3e8ef4f26c815542817 100644 --- a/VistaCoreLibs/VistaBase/VistaVector3D.h +++ b/VistaCoreLibs/VistaBase/VistaVector3D.h @@ -118,6 +118,7 @@ namespace Vista { const VistaVector3D ViewVector = VistaVector3D( 0, 0, -1, 0 ); const VistaVector3D UpVector = VistaVector3D( 0, 1, 0, 0 ); + const VistaVector3D RightVector = VistaVector3D(1, 0, 0, 0); const VistaVector3D ZeroVector = VistaVector3D( 0, 0, 0, 0 ); const VistaVector3D XAxis = VistaVector3D( 1, 0, 0, 0 ); const VistaVector3D YAxis = VistaVector3D( 0, 1, 0, 0 );