Esempio n. 1
0
        // Обратный кватернион
        public TQuaternion Reverse()
        {
            TQuaternion result = this.Conjugate();
            double      n      = Norm() * Norm();

            for (int i = 0; i < 4; i++)
            {
                result.Vec[i] = result.Vec[i] / n;
            }
            return(result);
        }
Esempio n. 2
0
        // Нормализация кватерниона
        public TQuaternion Normalization()
        {
            TQuaternion result = new TQuaternion(Vec[0], Vec[1], Vec[2], this.Vec[3]);
            double      n      = this.Norm();

            for (int i = 0; i < 4; i++)
            {
                result.Vec[i] = result.Vec[i] / n;
            }
            return(result);
        }
Esempio n. 3
0
        // Умножение на кватернион
        public TQuaternion Mult(TQuaternion Q)
        {
            double a, b, c, d;

            a = Vec[0] * Q.Vec[0] - Vec[1] * Q.Vec[1] - Vec[2] * Q.Vec[2] - Vec[3] * Q.Vec[3];
            b = Vec[0] * Q.Vec[1] + Vec[1] * Q.Vec[0] + Vec[2] * Q.Vec[3] - Vec[3] * Q.Vec[2];
            c = Vec[0] * Q.Vec[2] + Vec[2] * Q.Vec[0] - Vec[1] * Q.Vec[3] + Vec[3] * Q.Vec[1];
            d = Vec[0] * Q.Vec[3] + Vec[3] * Q.Vec[0] + Vec[1] * Q.Vec[2] - Vec[2] * Q.Vec[1];
            TQuaternion result = new TQuaternion(a, b, c, d);

            return(result);
        }
Esempio n. 4
0
        // Сумма кватернионов
        public TQuaternion Sum(TQuaternion Q)
        {
            TQuaternion Result = new TQuaternion(Vec[0] + Q.Vec[0], Vec[1] + Q.Vec[1], Vec[2] + Q.Vec[0], Vec[3] + Q.Vec[0]);

            return(Result);
        }
Esempio n. 5
0
        // Сопряженный кватернион
        public TQuaternion Conjugate()
        {
            TQuaternion Result = new TQuaternion(Vec[0], -Vec[1], -Vec[2], -Vec[3]);

            return(Result);
        }