Esempio n. 1
0
        /// <summary>
        /// MINK.Mul : res = a * b
        /// The geometric product.
        /// </summary>
        public static MINK operator *(MINK a, MINK b)
        {
            MINK res = new MINK();

            res[0] = b[0] * a[0] + b[1] * a[1] - b[2] * a[2] + b[3] * a[3];
            res[1] = b[1] * a[0] + b[0] * a[1] + b[3] * a[2] - b[2] * a[3];
            res[2] = b[2] * a[0] + b[3] * a[1] + b[0] * a[2] - b[1] * a[3];
            res[3] = b[3] * a[0] + b[2] * a[1] - b[1] * a[2] + b[0] * a[3];
            return(res);
        }
Esempio n. 2
0
        /// <summary>
        /// MINK.Conjugate : res = a.Conjugate()
        /// Clifford Conjugation
        /// </summary>
        public MINK Conjugate()
        {
            MINK res = new MINK();

            res[0] = this[0];
            res[1] = -this[1];
            res[2] = -this[2];
            res[3] = -this[3];
            return(res);
        }
Esempio n. 3
0
        /// <summary>
        /// MINK.Involute : res = a.Involute()
        /// Main involution
        /// </summary>
        public MINK Involute()
        {
            MINK res = new MINK();

            res[0] = this[0];
            res[1] = -this[1];
            res[2] = -this[2];
            res[3] = this[3];
            return(res);
        }
Esempio n. 4
0
        /// <summary>
        /// MINK.Dual : res = !a
        /// Poincare duality operator.
        /// </summary>
        public static MINK operator !(MINK a)
        {
            MINK res = new MINK();

            res[0] = a[3];
            res[1] = -a[2];
            res[2] = -a[1];
            res[3] = a[0];
            return(res);
        }
Esempio n. 5
0
        /// <summary>
        /// MINK.subs : res = a - b
        /// multivector/scalar subtraction
        /// </summary>
        public static MINK operator -(MINK a, float b)
        {
            MINK res = new MINK();

            res[0] = a[0] - b;
            res[1] = a[1];
            res[2] = a[2];
            res[3] = a[3];
            return(res);
        }
Esempio n. 6
0
        /// <summary>
        /// MINK.ssub : res = a - b
        /// scalar/multivector subtraction
        /// </summary>
        public static MINK operator -(float a, MINK b)
        {
            MINK res = new MINK();

            res[0] = a - b[0];
            res[1] = -b[1];
            res[2] = -b[2];
            res[3] = -b[3];
            return(res);
        }
Esempio n. 7
0
        /// <summary>
        /// MINK.Sub : res = a - b
        /// Multivector subtraction
        /// </summary>
        public static MINK operator -(MINK a, MINK b)
        {
            MINK res = new MINK();

            res[0] = a[0] - b[0];
            res[1] = a[1] - b[1];
            res[2] = a[2] - b[2];
            res[3] = a[3] - b[3];
            return(res);
        }
Esempio n. 8
0
        /// <summary>
        /// MINK.Vee : res = a & b
        /// The regressive product. (JOIN)
        /// </summary>
        public static MINK operator &(MINK a, MINK b)
        {
            MINK res = new MINK();

            res[3] = 1 * (a[3] * b[3]);
            res[2] = -1 * (a[2] * -1 * b[3] + a[3] * b[2] * -1);
            res[1] = 1 * (a[1] * b[3] + a[3] * b[1]);
            res[0] = 1 * (a[0] * b[3] + a[1] * b[2] * -1 - a[2] * -1 * b[1] + a[3] * b[0]);
            return(res);
        }