29 #ifndef INCLUDED_QuaternionC_h_GUID_1470A5FE_8209_41A6_C19E_46077FDF9C66 30 #define INCLUDED_QuaternionC_h_GUID_1470A5FE_8209_41A6_C19E_46077FDF9C66 54 #define OSVR_QUAT_MEMBER(COMPONENT, INDEX) \ 56 OSVR_INLINE double osvrQuatGet##COMPONENT(OSVR_Quaternion const *q) { \ 57 return q->data[INDEX]; \ 60 OSVR_INLINE void osvrQuatSet##COMPONENT(OSVR_Quaternion *q, double val) { \ 61 q->data[INDEX] = val; \ 64 OSVR_QUAT_MEMBER(W, 0)
65 OSVR_QUAT_MEMBER(X, 1)
66 OSVR_QUAT_MEMBER(Y, 2)
67 OSVR_QUAT_MEMBER(Z, 3)
69 #undef OSVR_QUAT_MEMBER 84 template <
typename StreamType>
85 inline StreamType &operator<<(StreamType &os,
OSVR_Quaternion const &quat) {
86 os <<
"(" << osvrQuatGetW(&quat) <<
", (" << osvrQuatGetX(&quat) <<
", " 87 << osvrQuatGetY(&quat) <<
", " << osvrQuatGetZ(&quat) <<
"))";
double data[4]
Internal data - direct access not recommended.
Definition: QuaternionC.h:51
A structure defining a quaternion, often a unit quaternion representing 3D rotation.
Definition: QuaternionC.h:49
Header providing basic C macros for defining API headers.
OSVR_INLINE void osvrQuatSetIdentity(OSVR_Quaternion *q)
Set a quaternion to the identity rotation.
Definition: QuaternionC.h:72
struct OSVR_Quaternion OSVR_Quaternion
A structure defining a quaternion, often a unit quaternion representing 3D rotation.