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++; } } }
public static GaPoTNumMultivector CreateBasisBlade(int idsPattern) { return(GaPoTNumMultivector.CreateZero().AddTerm(idsPattern, 1.0d)); }
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(); } } }