示例#1
0
            public override string ToString()
            {
                var composer = new ListComposer(" + ")
                {
                    FinalPrefix = TargetBasisBladeId.BasisBladeIndexedName() + ": { ",
                    FinalSuffix = " }"
                };

                composer.AddRange(TermsText);

                return(composer.ToString());
            }
        public override void Generate()
        {
            var textCollection = new ListComposerCollection(
                "basis_vectors",
                "members_declare",
                "init_inputs",
                "init_assign",
                "init_assign_array",
                "members_list",
                "normalize",
                "enorm2"
                )
            {
                ["basis_vectors"]     = { Separator = "," + Environment.NewLine },
                ["members_declare"]   = { Separator = Environment.NewLine },
                ["init_inputs"]       = { Separator = ", " },
                ["init_assign"]       = { Separator = Environment.NewLine },
                ["init_assign_array"] = { Separator = Environment.NewLine },
                ["members_list"]      = { Separator = ", " },
                ["normalize"]         = { Separator = Environment.NewLine },
                ["enorm2"]            = { Separator = " + " }
            };


            var basisVectorsCoefsText = new ListComposer(", ");

            for (var idx = 1; idx <= CurrentFrame.VSpaceDimension; idx++)
            {
                basisVectorsCoefsText.Clear();
                basisVectorsCoefsText.AddRange(
                    (1 << (idx - 1)).PatternToSequence(CurrentFrame.VSpaceDimension, "0.0D", "1.0D")
                    );

                textCollection["basis_vectors"].Add("new " + CurrentFrameName + "Vector(" + basisVectorsCoefsText + ")");
                textCollection["members_declare"].Add("public double C" + idx + " { get; set; }");
                textCollection["init_inputs"].Add(GMacLanguage.ScalarTypeName + " c" + idx);
                textCollection["init_assign"].Add("C" + idx + " = c" + idx + ";");
                textCollection["init_assign_array"].Add("C" + idx + " = c[" + (idx - 1) + "];");
                textCollection["members_list"].Add("C" + idx);
                textCollection["normalize"].Add("C" + idx + " *= invScalar;");
                textCollection["enorm2"].Add("C" + idx + " * C" + idx);
            }

            Templates["vector"].SetParametersValues(textCollection);

            TextComposer.Append(Templates["vector"],
                                "frame", CurrentFrameName,
                                "double", GMacLanguage.ScalarTypeName,
                                "norm2", textCollection["enorm2"].ToString() //TODO: This must be computed from the frame
                                );

            FileComposer.FinalizeText();
        }