예제 #1
0
        private static int[] ComputeBasisBladesSignatures(int[] frameSigList)
        {
            var vSpaceDim = frameSigList.Length;
            var bbsList   = new int[FrameUtils.GaSpaceDimension(vSpaceDim)];

            bbsList[0] = 1;

            for (var m = 0; m < vSpaceDim; m++)
            {
                bbsList[1 << m] = frameSigList[m];
            }

            var idsSeq = FrameUtils.BasisBladeIDsSortedByGrade(vSpaceDim, 2);

            foreach (var id in idsSeq)
            {
                int id1, id2;

                id.SplitBySmallestBasisVectorId(out id1, out id2);

                bbsList[id] = bbsList[id1] * bbsList[id2];
            }

            return(bbsList);
        }
예제 #2
0
        private static MathematicaScalar[] ComputeBasisBladesSignatures(MathematicaScalar[] basisVectorsSignaturesList)
        {
            var vspacedim = basisVectorsSignaturesList.Length;
            var bbsList   = new MathematicaScalar[FrameUtils.GaSpaceDimension(vspacedim)];

            bbsList[0] = SymbolicUtils.Constants.One;

            for (var m = 0; m < vspacedim; m++)
            {
                bbsList[1 << m] = basisVectorsSignaturesList[m];
            }

            var idsSeq = FrameUtils.BasisBladeIDsSortedByGrade(vspacedim, 2);

            foreach (var id in idsSeq)
            {
                int id1, id2;

                id.SplitBySmallestBasisVectorId(out id1, out id2);

                bbsList[id] = bbsList[id1] * bbsList[id2];
            }

            return(bbsList);
        }
        private static string EuclideanSample(int vSpaceDim)
        {
            Composer.Clear();

            var basisBladeIds = FrameUtils.BasisBladeIDsSortedByGrade(vSpaceDim).ToArray();

            Composer
            .AppendLine("Involution Tables, " + vSpaceDim + "D Space:")
            .IncreaseIndentation()
            .AppendLine(InvolutionTables(basisBladeIds))
            .DecreaseIndentation()
            .AppendLineAtNewLine(PageSeparator)
            .AppendLine();

            Composer
            .AppendLine("Geometric Product Table, " + vSpaceDim + "D Space:")
            .IncreaseIndentation()
            .AppendLine(EuclideanBilinearProductTable(basisBladeIds, EuclideanUtils.IsZeroEuclideanGp))
            .DecreaseIndentation()
            .AppendLineAtNewLine(PageSeparator)
            .AppendLine();

            Composer
            .AppendLine("Outer Product Table, " + vSpaceDim + "D Space:")
            .IncreaseIndentation()
            .AppendLine(EuclideanBilinearProductTable(basisBladeIds, EuclideanUtils.IsZeroOp))
            .DecreaseIndentation()
            .AppendLineAtNewLine(PageSeparator)
            .AppendLine();

            Composer
            .AppendLine("Scalar Product Table, " + vSpaceDim + "D Space:")
            .IncreaseIndentation()
            .AppendLine(EuclideanBilinearProductTable(basisBladeIds, EuclideanUtils.IsZeroEuclideanSp))
            .DecreaseIndentation()
            .AppendLineAtNewLine(PageSeparator)
            .AppendLine();

            Composer
            .AppendLine("Left Contraction Product Table, " + vSpaceDim + "D Space:")
            .IncreaseIndentation()
            .AppendLine(EuclideanBilinearProductTable(basisBladeIds, EuclideanUtils.IsZeroEuclideanLcp))
            .DecreaseIndentation()
            .AppendLineAtNewLine(PageSeparator)
            .AppendLine();

            Composer
            .AppendLine("Right Contraction Product Table, " + vSpaceDim + "D Space:")
            .IncreaseIndentation()
            .AppendLine(EuclideanBilinearProductTable(basisBladeIds, EuclideanUtils.IsZeroEuclideanRcp))
            .DecreaseIndentation()
            .AppendLineAtNewLine(PageSeparator)
            .AppendLine();

            return(Composer.ToString());
        }