internal GaNumMetricNonOrthogonal(GaNumFrame baseFrame, GaNumFrame derivedFrame, GaNumOutermorphism derivedToBaseCba, GaNumOutermorphism baseToDerivedCba) { BaseFrame = baseFrame; DerivedFrame = derivedFrame; DerivedToBaseCba = derivedToBaseCba; BaseToDerivedCba = baseToDerivedCba; }
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]; }
public static GaNumOutermorphism ToOutermorphism(this Matrix linearVectorMapMatrix) { return(GaNumOutermorphism.Create(linearVectorMapMatrix)); }