29 #ifndef INCLUDED_QuatlibInteropC_h_GUID_85D92019_F0CC_419C_5F6D_F5A3134AA5D4 30 #define INCLUDED_QuatlibInteropC_h_GUID_85D92019_F0CC_419C_5F6D_F5A3134AA5D4 47 OSVR_INLINE
void osvrQuatToQuatlib(q_type dest,
OSVR_Quaternion const *src) {
48 dest[Q_W] = osvrQuatGetW(src);
49 dest[Q_X] = osvrQuatGetX(src);
50 dest[Q_Y] = osvrQuatGetY(src);
51 dest[Q_Z] = osvrQuatGetZ(src);
54 OSVR_INLINE
void osvrQuatFromQuatlib(
OSVR_Quaternion *dest, q_type
const src) {
55 osvrQuatSetW(dest, src[Q_W]);
56 osvrQuatSetX(dest, src[Q_X]);
57 osvrQuatSetY(dest, src[Q_Y]);
58 osvrQuatSetZ(dest, src[Q_Z]);
61 OSVR_INLINE
void osvrVec3ToQuatlib(q_vec_type dest,
OSVR_Vec3 const *src) {
62 memcpy((
void *)(dest), (
void const *)(src->
data),
sizeof(
double) * 3);
65 OSVR_INLINE
void osvrVec3FromQuatlib(
OSVR_Vec3 *dest, q_vec_type
const src) {
66 memcpy((
void *)(dest->
data), (
void const *)(src),
sizeof(
double) * 3);
69 OSVR_INLINE
void osvrPose3ToQuatlib(q_xyz_quat_type *dest,
72 osvrQuatToQuatlib(dest->quat, &(src->
rotation));
75 OSVR_INLINE
void osvrPose3FromQuatlib(
OSVR_Pose3 *dest,
76 q_xyz_quat_type
const *src) {
77 osvrVec3FromQuatlib(&(dest->
translation), src->xyz);
78 osvrQuatFromQuatlib(&(dest->
rotation), src->quat);
A structure defining a 3D vector, often a position/translation.
Definition: Vec3C.h:48
OSVR_Quaternion rotation
Orientation as a unit quaternion.
Definition: Pose3C.h:58
A structure defining a quaternion, often a unit quaternion representing 3D rotation.
Definition: QuaternionC.h:49
double data[3]
Internal array data.
Definition: Vec3C.h:50
Header providing basic C macros for defining API headers.
A structure defining a 3D (6DOF) rigid body pose: translation and rotation.
Definition: Pose3C.h:54
OSVR_Vec3 translation
Position vector.
Definition: Pose3C.h:56