Example #1
0
        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];
        }
Example #3
0
        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];
        }