private static string EuclideanBilinearProductTable(int[] basisBladeIds, Func <int, int, bool> isZeroFunc) { var composer = new TableComposer(basisBladeIds.Length, basisBladeIds.Length); for (var r = 0; r < basisBladeIds.Length; r++) { var id1 = basisBladeIds[r]; composer.ColumnsInfo[r].Header = id1.BasisBladeName(); composer.RowsInfo[r].Header = id1.BasisBladeName(); for (var c = 0; c < basisBladeIds.Length; c++) { var id2 = basisBladeIds[c]; //var isNegative = MultivectorUtils.ComputeIsNegativeEGp(id1, id2); var isNegative = FrameUtils.IsNegativeEGp(id1, id2); var name = isZeroFunc(id1, id2) ? "0" : ((isNegative ? "-" : "") + (id1 ^ id2).BasisBladeName()); composer.Items[r, c] = name; } } return(composer.ToString()); }
public override string ToString() { var tableText = new TableComposer(TargetGaSpaceDimension, TargetGaSpaceDimension); var basisBladeIds = GMacMathUtils.BasisBladeIDs(TargetVSpaceDimension).ToArray(); foreach (var basisBladeId in basisBladeIds) { tableText.ColumnsInfo[basisBladeId].Header = basisBladeId.BasisBladeName(); tableText.RowsInfo[basisBladeId].Header = basisBladeId.BasisBladeName(); } for (var basisBladeId1 = 0; basisBladeId1 < TargetGaSpaceDimension; basisBladeId1++) { for (var basisBladeId2 = 0; basisBladeId2 < TargetGaSpaceDimension; basisBladeId2++) { var mv = _basisBladesMaps[basisBladeId1, basisBladeId2]; if (mv != null) { tableText.Items[basisBladeId1, basisBladeId2] = mv.ToString(); } } } var text = tableText.ToString(); return(text); }
private static string InvolutionTables(int[] basisBladeIds) { var composer = new TableComposer(basisBladeIds.Length, 3); composer.ColumnsInfo[0].Header = "Reverse"; composer.ColumnsInfo[1].Header = "Grade Involution"; composer.ColumnsInfo[2].Header = "Clifford Conjugate"; for (var r = 0; r < basisBladeIds.Length; r++) { var id = basisBladeIds[r]; composer.RowsInfo[r].Header = id.BasisBladeName(); composer.Items[r, 0] = id.BasisBladeIdHasNegativeReverse() ? "-1" : "+1"; composer.Items[r, 1] = id.BasisBladeIdHasNegativeGradeInv() ? "-1" : "+1"; composer.Items[r, 2] = id.BasisBladeIdHasNegativeClifConj() ? "-1" : "+1"; } return(composer.ToString()); }
public override string ToString() { var tableText = new TableComposer(TargetGaSpaceDimension, TargetGaSpaceDimension); var basisBladeIds = GMacMathUtils.BasisBladeIDs(TargetVSpaceDimension).ToArray(); foreach (var basisBladeId in basisBladeIds) { tableText.ColumnsInfo[basisBladeId].Header = basisBladeId.BasisBladeName(); tableText.RowsInfo[basisBladeId].Header = basisBladeId.BasisBladeName(); } foreach (var pair in _basisBladesMaps) { tableText.Items[pair.Item1, pair.Item2] = pair.Item3.ToString(); } var text = tableText.ToString(); return(text); }