internal GaNumFrameEuclidean(int vSpaceDim) { EuclideanMetric = GaNumMetricEuclidean.Create(vSpaceDim); Op = ComputedOp = new GaNumOp(VSpaceDimension); Gp = ComputedGp = new GaNumEuclideanGp(VSpaceDimension); Sp = ComputedSp = new GaNumEuclideanSp(VSpaceDimension); Lcp = ComputedLcp = new GaNumEuclideanLcp(VSpaceDimension); Rcp = ComputedRcp = new GaNumEuclideanRcp(VSpaceDimension); Fdp = ComputedFdp = new GaNumEuclideanFdp(VSpaceDimension); Hip = ComputedHip = new GaNumEuclideanHip(VSpaceDimension); Acp = ComputedAcp = new GaNumEuclideanAcp(VSpaceDimension); Cp = ComputedCp = new GaNumEuclideanCp(VSpaceDimension); UnitPseudoScalarCoef = 1.0d; }
internal GaNumFrameOrthogonal(IEnumerable <double> basisVectorsSignaturesList) { BasisVectorsSignatures = basisVectorsSignaturesList.ToArray(); OrthogonalMetric = GaNumMetricOrthogonal.Create(BasisVectorsSignatures); Op = ComputedOp = new GaNumOp(VSpaceDimension); Gp = ComputedGp = new GaNumOrthogonalGp(OrthogonalMetric); Sp = ComputedSp = new GaNumOrthogonalSp(OrthogonalMetric); Lcp = ComputedLcp = new GaNumOrthogonalLcp(OrthogonalMetric); Rcp = ComputedRcp = new GaNumOrthogonalRcp(OrthogonalMetric); Fdp = ComputedFdp = new GaNumOrthogonalFdp(OrthogonalMetric); Hip = ComputedHip = new GaNumOrthogonalHip(OrthogonalMetric); Acp = ComputedAcp = new GaNumOrthogonalAcp(OrthogonalMetric); Cp = ComputedCp = new GaNumOrthogonalCp(OrthogonalMetric); UnitPseudoScalarCoef = (MaxBasisBladeId.BasisBladeIdHasNegativeReverse() ? -1.0d : 1.0d) / OrthogonalMetric[MaxBasisBladeId]; }
internal GaNumFrameNonOrthogonal(GaNumFrame baseOrthoFrame, Matrix ipm, GaNumOutermorphism derivedToBaseOm, GaNumOutermorphism baseToDerivedOm) { if (baseOrthoFrame.IsOrthogonal == false) { throw new GMacNumericException("Base frame must be orthogonal"); } if (ipm.IsDiagonal()) { throw new GMacNumericException("Inner product matrix must be non-diagonal"); } InnerProductMatrix = ipm; NonOrthogonalMetric = new GaNumMetricNonOrthogonal( baseOrthoFrame, this, derivedToBaseOm, baseToDerivedOm ); Op = ComputedOp = new GaNumOp(VSpaceDimension); Gp = ComputedGp = GaNumBilinearProductCba.CreateGp(NonOrthogonalMetric); Sp = ComputedSp = GaNumBilinearProductCba.CreateSp(NonOrthogonalMetric); Lcp = ComputedLcp = GaNumBilinearProductCba.CreateLcp(NonOrthogonalMetric); Rcp = ComputedRcp = GaNumBilinearProductCba.CreateRcp(NonOrthogonalMetric); Fdp = ComputedFdp = GaNumBilinearProductCba.CreateFdp(NonOrthogonalMetric); Hip = ComputedHip = GaNumBilinearProductCba.CreateHip(NonOrthogonalMetric); Acp = ComputedAcp = GaNumBilinearProductCba.CreateAcp(NonOrthogonalMetric); Cp = ComputedCp = GaNumBilinearProductCba.CreateCp(NonOrthogonalMetric); UnitPseudoScalarCoef = (MaxBasisBladeId.BasisBladeIdHasNegativeReverse() ? -1.0d : 1.0d) / BasisBladeSignature(MaxBasisBladeId)[0]; }