#undef dot #undef cross extern "C" { #include "data_types.h" } vec_ operator+( const vec_ &, const vec_ & ); /* v = v1 + v2 */ vec_ operator-( const vec_ &, const vec_ & ); /* v = v1 - v2 */ mat_ operator+( const mat_ &, const mat_ & ); /* m = m1 + m2 */ mat_ operator-( const mat_ &, const mat_ & ); /* m = m1 - m2 */ vec_ &operator+=( vec_ &, const vec_ & ); /* v += v2 */ mat_ &operator+=( mat_ &, const mat_ & ); /* m += m2 */ vec_ &operator-=( vec_ &, const vec_ & ); /* v -= v2 */ mat_ &operator-=( mat_ &, const mat_ & ); /* m -= m2 */ vec_ operator*( double, const vec_ & ); /* v = a * v1 */ mat_ operator*( double, const mat_ & ); /* m = a * m1 */ vec_ operator*( const vec_ &, double ); /* v = v1 * a */ mat_ operator*( const mat_ &, double ); /* m = m1 * a */ vec_ operator/( const vec_ &, double ); /* v = v1 / a */ mat_ operator/( const mat_ &, double ); /* m = m1 / a */ vec_ operator*=( vec_ &, const double a ); /* v *= a */ vec_ operator/=( vec_ &, const double a ); /* v /= a */ vec_ operator*( const mat_ &, const vec_ & ); /* v = m1 * v1 */ mat_ operator*( const mat_ &, const mat_ & ); /* m = m1 * m2 */ quat_ operator*( const quat_ &, const quat_ & ); /* q = q1 * q2 */ quat_ operator*( double, const quat_ & ); /* q = a * q1 */ quat_ operator*( const quat_ &, double ); /* q = q1 * a */ quat_ operator/( const quat_ &, double ); /* q = q1 / a */ vec_ operator-( const vec_ & ); /* v = - v1 */ vec_ operator+( const vec_ & ); /* v = + v1 */ mat_ operator-( const mat_ & ); /* m = - m1 */ mat_ operator+( const mat_ & ); /* m = + m1 */ quat_ operator+( const quat_ & ); /* q = + q */ quat_ operator-( const quat_ & ); /* q = - q */ quat_ &operator*=( quat_ &, const quat_ & ); /* q1 *= q2; */ quat_ &operator+=( quat_ &, const quat_ & ); /* q1 += q2; */ quat_ &operator*=( quat_ &, const double a ); /* q1 *= a; */ quat_ operator+( const quat_ &q1, const quat_ &q2 ); /* q3 = q1 + q2 */ vec_ unit ( const vec_ & ); /* unitize vec */ quat_ unit ( const quat_ & ); /* unitize quat */ mat_ trans ( const mat_ & ); /* transpose matrix */ quat_ trans ( const quat_ & ); /* transpose quat */ double dot ( const vec_, const vec_ ); /* vector dot product */ vec_ cross ( const vec_, const vec_ ); /* vector cross product */