Esempio n. 1
0
        /// <summary>
        /// Find all basis blade IDs with the given grade in a given frame
        /// </summary>
        /// <param name="frame"></param>
        /// <param name="grade"></param>
        /// <returns></returns>
        public static IEnumerable <int> BasisBladeIDsOfGrade(this IGMacFrame frame, int grade)
        {
            var kvDim = frame.KvSpaceDimension(grade);

            return
                (Enumerable
                 .Range(0, kvDim)
                 .Select(index => BasisBladeId(grade, index)));
        }
Esempio n. 2
0
        /// <summary>
        /// Returns the basis blade IDs of having the given grades
        /// </summary>
        /// <param name="frame"></param>
        /// <param name="gradesSeq"></param>
        /// <returns></returns>
        public static IEnumerable <int> BasisBladeIDsOfGrades(this IGMacFrame frame, params int[] gradesSeq)
        {
            foreach (var grade in gradesSeq.OrderBy(g => g))
            {
                var kvSpaceDim = frame.KvSpaceDimension(grade);

                for (var index = 0; index < kvSpaceDim; index++)
                {
                    yield return(BasisBladeId(grade, index));
                }
            }
        }
Esempio n. 3
0
        /// <summary>
        /// The basis blade IDs of the given frame sorted by their grade and index
        /// </summary>
        /// <param name="frame"></param>
        /// <param name="startGrade"></param>
        /// <returns></returns>
        public static IEnumerable <int> BasisBladeIDsSortedByGrade(this IGMacFrame frame, int startGrade = 0)
        {
            for (var grade = startGrade; grade <= frame.VSpaceDimension; grade++)
            {
                var kvSpaceDim = frame.KvSpaceDimension(grade);

                for (var index = 0; index < kvSpaceDim; index++)
                {
                    yield return(BasisBladeId(grade, index));
                }
            }
        }
Esempio n. 4
0
        /// <summary>
        /// Returns the basis blade IDs of having the given grades grouped by their grade
        /// </summary>
        /// <param name="frame"></param>
        /// <param name="gradesSeq"></param>
        /// <returns></returns>
        public static Dictionary <int, List <int> > BasisBladeIDsGroupedByGrade(this IGMacFrame frame, params int[] gradesSeq)
        {
            var result = new Dictionary <int, List <int> >();

            foreach (var grade in gradesSeq)
            {
                var kvSpaceDim = frame.KvSpaceDimension(grade);

                var newList = new List <int>(kvSpaceDim);

                for (var index = 0; index < kvSpaceDim; index++)
                {
                    newList.Add(BasisBladeId(grade, index));
                }

                result.Add(grade, newList);
            }

            return(result);
        }
Esempio n. 5
0
        /// <summary>
        /// Returns the basis blade IDs of having the given grades grouped by their grade
        /// </summary>
        /// <param name="frame"></param>
        /// <param name="startGrade"></param>
        /// <returns></returns>
        public static Dictionary <int, List <int> > BasisBladeIDsGroupedByGrade(this IGMacFrame frame, int startGrade = 0)
        {
            var result = new Dictionary <int, List <int> >();

            for (var grade = startGrade; grade <= frame.VSpaceDimension; grade++)
            {
                var kvSpaceDim = frame.KvSpaceDimension(grade);

                var newList = new List <int>(kvSpaceDim);

                for (var index = 0; index < kvSpaceDim; index++)
                {
                    newList.Add(BasisBladeId(grade, index));
                }

                result.Add(grade, newList);
            }

            return(result);
        }