예제 #1
0
        /// <summary>
        /// Create a multivector pattern from the given multivector value using only constant components
        /// from the multivector
        /// </summary>
        /// <param name="mv"></param>
        /// <param name="ignoreZeroCoefs"></param>
        /// <returns></returns>
        public static GMacMultivectorBinding CreateFromConstants(AstValueMultivector mv, bool ignoreZeroCoefs = true)
        {
            var mvPattern = new GMacMultivectorBinding(mv.FrameMultivector);

            foreach (var term in mv.AssociatedMultivectorValue.MultivectorCoefficients)
            {
                if (ignoreZeroCoefs && term.Value.IsZero())
                {
                    continue;
                }

                if (term.Value.IsConstant())
                {
                    mvPattern.BindCoefToConstant(term.Key, term.Value.MathExpr);
                }
            }

            return(mvPattern);
        }
예제 #2
0
        /// <summary>
        /// Create a multivector pattern from the given multivector value
        /// </summary>
        /// <param name="mv"></param>
        /// <param name="ignoreZeroCoefs"></param>
        /// <returns></returns>
        public static GMacMultivectorBinding Create(AstValueMultivector mv, bool ignoreZeroCoefs = true)
        {
            var mvPattern = new GMacMultivectorBinding(mv.FrameMultivector);

            foreach (var term in mv.AssociatedMultivectorValue.SymbolicMultivector.NonZeroTerms)
            {
                if (ignoreZeroCoefs && term.Value.IsZero())
                {
                    continue;
                }

                if (term.Value.IsConstant())
                {
                    mvPattern.BindCoefToConstant(term.Key, term.Value.Expression);
                }

                else
                {
                    mvPattern.BindCoefToVariable(term.Key);
                }
            }

            return(mvPattern);
        }