29 #ifndef INCLUDED_Vec3C_h_GUID_BF4E98ED_74CF_4785_DB61_109A00BA74DE
30 #define INCLUDED_Vec3C_h_GUID_BF4E98ED_74CF_4785_DB61_109A00BA74DE
53 #define OSVR_VEC_MEMBER(COMPONENT, INDEX) \
55 OSVR_INLINE double osvrVec3Get##COMPONENT(OSVR_Vec3 const *v) { \
56 return v->data[INDEX]; \
59 OSVR_INLINE void osvrVec3Set##COMPONENT(OSVR_Vec3 *v, double val) { \
60 v->data[INDEX] = val; \
67 #undef OSVR_VEC_MEMBER
81 template <
typename StreamType>
82 inline StreamType &operator<<(StreamType &os,
OSVR_Vec3 const &vec) {
83 os <<
"(" << vec.
data[0] <<
", " << vec.
data[1] <<
", " << vec.
data[2]
A structure defining a 3D vector, often a position/translation.
void osvrVec3Zero(OSVR_Vec3 *v)
Set a Vec3 to the zero vector.
double data[3]
Internal array data.
struct OSVR_Vec3 OSVR_Vec3
A structure defining a 3D vector, often a position/translation.
void osvrVec3SetX(OSVR_Vec3 *v, double val)
Setter for Vec3 component X.
Header providing basic C macros for defining API headers.
void osvrVec3SetZ(OSVR_Vec3 *v, double val)
Setter for Vec3 component Z.
void osvrVec3SetY(OSVR_Vec3 *v, double val)
Setter for Vec3 component Y.