public static Fix64Quat Inverse(Fix64Quat a) { long inv_norm = NativeFixedMath.Rcp64(LengthSqr(a).Raw); return(Make( -NativeFixedMath.Mul64(a.RawX, inv_norm), -NativeFixedMath.Mul64(a.RawY, inv_norm), -NativeFixedMath.Mul64(a.RawZ, inv_norm), NativeFixedMath.Mul64(a.RawW, inv_norm))); }
public static Fix64Quat Normalize(Fix64Quat a) { long inv_norm = NativeFixedMath.Rcp64(LengthFastest(a).Raw); Fix64 x = Fix64.FromRaw(NativeFixedMath.Mul64(a.RawX, inv_norm)); Fix64 y = Fix64.FromRaw(NativeFixedMath.Mul64(a.RawY, inv_norm)); Fix64 z = Fix64.FromRaw(NativeFixedMath.Mul64(a.RawZ, inv_norm)); Fix64 w = Fix64.FromRaw(NativeFixedMath.Mul64(a.RawW, inv_norm)); return(new Fix64Quat(x, y, z, w)); }