#pragma once #ifndef QUATERNION_H #define QUATERNION_H #include "vector.h" #include typedef struct { float x, y, z, w; } Quaternion; Quaternion QuatNormalize(const Quaternion* q, const float gain); Quaternion QuatConjugate(const Quaternion* q); Quaternion QuatInvert(const Quaternion* q); Quaternion QuatNegate(const Quaternion* q); Quaternion QuatSum(const Quaternion* q1, const Quaternion* q2); Quaternion QuatDiff(const Quaternion* q1, const Quaternion* q2); Quaternion QuatConstProd(const Quaternion* q, const float value); Quaternion QuatProd(const Quaternion* q1, const Quaternion* q2); Vector3 QuatRotateAroundZ(const Vector3* vec, bool CCW); Quaternion QuatCreateRollPitchYaw(const Vector3* RollPitchYawRad); Quaternion QuatGetError(const Quaternion* current, const Quaternion* target, bool fastWay); #endif