public static void Execute3()
        {
            var bitsCount = 4;

            //var mv = GaPoTNumMultivector.CreateZero().AddTerms(
            //    Enumerable.Range(0, 1 << bitsCount).Select(id => new GaPoTNumMultivectorTerm(id, 1))
            //);

            var mv = GaPoTNumMultivector
                     .CreateZero()
                     .AddTerm(3, 1)
                     .AddTerm(5, 2)
                     .AddTerm(0, -2);

            Console.WriteLine(mv.ToText());
        }
        public static void Execute()
        {
            var n = 3;

            var fbdFrame = GaPoTNumFrame.CreateFbdFrame(n);

            var m1 = fbdFrame.GetMatrix(n - 1).GetLaTeXArray();
            var m2 = fbdFrame.GetInnerProductsMatrix().GetLaTeXArray();
            var m3 = fbdFrame.GetInnerAnglesInDegreesMatrix().GetLaTeXArray();

            Console.WriteLine("FBD Frame Matrix:");
            Console.WriteLine(m1);
            Console.WriteLine();

            Console.WriteLine("FBD Frame Inner Products Matrix:");
            Console.WriteLine(m2);
            Console.WriteLine();

            Console.WriteLine("FBD Frame Inner Angles Matrix:");
            Console.WriteLine(m3);
            Console.WriteLine();

            //return;

            var sourceFrame = GaPoTNumFrame.CreateBasisFrame(n);

            var uPseudoScalar = GaPoTNumMultivector
                                .CreateZero()
                                .SetTerm((1 << n) - 1, 1.0d);

            for (var refVectorIndex = 0; refVectorIndex < n; refVectorIndex++)
            {
                Console.Write(@"\section{Reference vector: $\mu_" + (refVectorIndex + 1) + "$}");
                Console.WriteLine();

                var kirchhoffFrameBase = GaPoTNumFrame.CreateEmptyFrame();

                var refVector = sourceFrame[refVectorIndex];
                for (var i = 0; i < n; i++)
                {
                    if (i == refVectorIndex)
                    {
                        continue;
                    }

                    kirchhoffFrameBase.AppendVector(sourceFrame[i] - refVector);
                }

                var kirchhoffFramesList =
                    kirchhoffFrameBase.GetFramePermutations();

                var j = 1;
                foreach (var kirchhoffFrame in kirchhoffFramesList)
                {
                    Console.Write(@"\subsection{Kirchhoff Frame Permutation " + j + "}");
                    Console.WriteLine();

                    var targetFrame = kirchhoffFrame.GetOrthogonalFrame(true);

                    targetFrame.AppendVector(
                        -GaPoTNumUtils
                        .OuterProduct(targetFrame)
                        .Gp(uPseudoScalar.CliffordConjugate())
                        .GetVectorPart()
                        );

                    Debug.Assert(
                        targetFrame.IsOrthonormal()
                        );

                    Debug.Assert(
                        sourceFrame.HasSameHandedness(targetFrame)
                        );

                    DisplayFrames(
                        sourceFrame,
                        kirchhoffFrame,
                        targetFrame
                        );

                    j++;
                }
            }
        }
Esempio n. 3
0
 public static GaPoTNumMultivector CreateBasisBlade(int idsPattern)
 {
     return(GaPoTNumMultivector.CreateZero().AddTerm(idsPattern, 1.0d));
 }
Esempio n. 4
0
        public static void Execute()
        {
            var refVectorIndex = 0;

            for (var n = 3; n <= 8; n++)
            {
                var uFrame =
                    GaPoTNumFrame.CreateBasisFrame(n);

                var uPseudoScalar =
                    GaPoTNumMultivector
                    .CreateZero()
                    .SetTerm((1 << n) - 1, 1.0d);

                var eFrame =
                    GaPoTNumFrame.CreateKirchhoffFrame(n, refVectorIndex);

                var pFrame =
                    uFrame.GetProjectionOnFrame(eFrame);

                var fbdFrame = GaPoTNumFrame.CreateFbdFrame(n);

                var rotorsSequence = GaPoTNumRotorsSequence.CreateFromFrames(
                    n,
                    pFrame,
                    fbdFrame
                    );


                //var pFrame1 = pFrame
                //    .GetSubFrame(0, n - 1)
                //    .PrependVector(GaPoTNumVector.CreateAutoVector(n))
                //    .GetOrthogonalFrame(true);

                //var fbdFrame1 = fbdFrame
                //    .GetSubFrame(0, n - 1)
                //    .PrependVector(GaPoTNumVector.CreateAutoVector(n))
                //    .GetOrthogonalFrame(true);

                //var rs = GaPoTNumRotorsSequence.Create(
                //    pFrame1.GetRotorsToFrame(fbdFrame1)
                //);

                var pFrame2 = rotorsSequence.Rotate(pFrame);

                Console.Write(@"\section{Dimensions: " + n + "}");
                Console.WriteLine();

                Console.Write(@"\subsection{FBD Frame:}");
                Console.WriteLine();

                DisplayFrame(fbdFrame);

                Console.Write(@"\subsection{Projected Frame:}");
                Console.WriteLine();

                DisplayFrame(pFrame);

                Console.Write(@"\subsection{Rotated Projected Frame:}");
                Console.WriteLine();

                DisplayFrame(pFrame2);

                Console.WriteLine("Rotors Sequence:");

                for (var i = 0; i < rotorsSequence.Count; i++)
                {
                    var rotorEquation =
                        rotorsSequence[i].ToLaTeXEquationsArray(
                            $"R_{{{i + 1}}}",
                            @"\mu"
                            );

                    Console.WriteLine(rotorEquation);
                    Console.WriteLine();
                }
            }
        }