/// <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); }
/// <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); }