99 const struct FloatVect3 psi_vect = {cosf(heading), sinf(heading), 0.0};
117 float yaw2 = atan2(nc, dot) / 2.0;
122 if (dot_cross_ab < 0) {
128 QUAT_ASSIGN(q_yaw, cosf(yaw2), 0.0, 0.0, sinf(yaw2));
#define VECT3_CROSS_PRODUCT(_vo, _v1, _v2)
#define VECT3_DOT_PRODUCT(_v1, _v2)
void float_quat_comp(struct FloatQuat *a2c, struct FloatQuat *a2b, struct FloatQuat *b2c)
Composition (multiplication) of two quaternions.
#define VECT3_DIFF(_c, _a, _b)
#define VECT3_ASSIGN(_a, _x, _y, _z)
#define FLOAT_VECT3_NORM(_v)
#define ANGLE_FLOAT_OF_BFP(_ai)
void float_rmat_of_quat(struct FloatRMat *rm, struct FloatQuat *q)
#define QUAT_ASSIGN(_q, _i, _x, _y, _z)
#define QUAT_BFP_OF_REAL(_qi, _qf)
static void float_quat_normalize(struct FloatQuat *q)
#define VECT3_SMUL(_vo, _vi, _s)
void float_quat_of_orientation_vect(struct FloatQuat *q, const struct FloatVect3 *ov)
Quaternion from orientation vector.
static void float_quat_wrap_shortest(struct FloatQuat *q)
#define EULERS_FLOAT_OF_BFP(_ef, _ei)