Ejemplo n.º 1
0
        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)));
        }
Ejemplo n.º 2
0
        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));
        }