#pragma once

struct Vec3 { float x, y, z; };

struct ORI
{
  float sinX, sinY, cosZ; // Earth's plane tilt
  float Pitch, Roll, Yaw; // Sovereign orientation (not Euler)
  float IneX, IneY, IneZ; // Inertial accelerations
};

ORI WorkAccGyroMag(const Vec3 acc, const Vec3 gyr, const Vec3 mag, const float mag_shift, const float alpha);

Vec3 RotateToZ(const Vec3 vec, bool Rev=false);
void QuatGoToZero();