예제 #1
0
        public Multivector SetGrade(PureGrade value)
        {
            if (Space != value.Space)
            {
                throw new ArgumentException("Cannot set grade from a different space than the original multivector.");
            }

            var k = value.Grade;
            var l = value.Elements.Count;

            for (uint i = 0; i < l; i++)
            {
                this[(int)Space.IndexFromBladeBasis(k, i)] = value.Elements[(int)i];
            }

            return(this);
        }
예제 #2
0
 public static PureGrade Conjugate(PureGrade M)
 => M.Clone().Conjugate();
예제 #3
0
 public static PureGrade Reverse(PureGrade M)
 => M.Clone().Reverse();
예제 #4
0
 public static PureGrade Involute(PureGrade M)
 => M.Clone().Involute();
예제 #5
0
 public PureGrade Copy(PureGrade b) => (PureGrade)base.Copy(b);
예제 #6
0
 public static PureGrade Clone(PureGrade M) => M.Clone();
예제 #7
0
        // Retyping Multivector methods to return PureGrade

        public PureGrade(PureGrade M) : this(M.Space, M.Grade) => Copy(M);