public Scientrace.UniformTraceModifier getUtm(XElement xutm)
        {
            string sDispat = this.X.getXStringByAttribute(xutm, "DistributionPattern");
            Scientrace.DistributionPattern dispat = (Scientrace.DistributionPattern)Enum.Parse(typeof(Scientrace.DistributionPattern), sDispat);
            string sSpadis = this.X.getXStringByAttribute(xutm, "SpatialDistribution");
            Scientrace.SpatialDistribution spadis = (Scientrace.SpatialDistribution)Enum.Parse(typeof(Scientrace.SpatialDistribution), sSpadis);
            bool addself = this.X.getXBool(xutm, "AddSelf");
            int modifycount = this.X.getXInt(xutm, "ModifyCount", 1);
            int? randomseed = this.X.getXInt(xutm, "RandomSeed", -1);
            //cannot set default value "null" for double so use -1 workaround (which can also be used as an integer value in the XML)
            if (randomseed == -1) { randomseed = null; }
            double maxangle = this.X.getXAngleByName(xutm, "MaxAngle", Math.PI*0.25);

            Scientrace.UniformTraceModifier retutm = new Scientrace.UniformTraceModifier(dispat, spadis);

            retutm.add_self = addself;
            retutm.setMaxAngle(maxangle);
            //Console.WriteLine("Maxangle read: "+maxangle+" result: "+retutm.maxangle);
            retutm.modify_traces_count = modifycount;
            retutm.randomSeed = randomseed;

            retutm.random_modification_select = this.X.getXBool(xutm, "Random", retutm.random_modification_select);

            return retutm;
        }
        public Scientrace.UniformTraceModifier getUtm(XElement xutm)
        {
            string sDispat = this.X.getXStringByAttribute(xutm, "DistributionPattern");

            Scientrace.DistributionPattern dispat = (Scientrace.DistributionPattern)Enum.Parse(typeof(Scientrace.DistributionPattern), sDispat);
            string sSpadis = this.X.getXStringByAttribute(xutm, "SpatialDistribution");

            Scientrace.SpatialDistribution spadis = (Scientrace.SpatialDistribution)Enum.Parse(typeof(Scientrace.SpatialDistribution), sSpadis);
            bool addself     = this.X.getXBool(xutm, "AddSelf");
            int  modifycount = this.X.getXInt(xutm, "ModifyCount", 1);
            int? randomseed  = this.X.getXInt(xutm, "RandomSeed", -1);

            //cannot set default value "null" for double so use -1 workaround (which can also be used as an integer value in the XML)
            if (randomseed == -1)
            {
                randomseed = null;
            }
            double maxangle = this.X.getXAngleByName(xutm, "MaxAngle", Math.PI * 0.25);


            Scientrace.UniformTraceModifier retutm = new Scientrace.UniformTraceModifier(dispat, spadis);

            retutm.add_self = addself;
            retutm.setMaxAngle(maxangle);
            //Console.WriteLine("Maxangle read: "+maxangle+" result: "+retutm.maxangle);
            retutm.modify_traces_count = modifycount;
            retutm.randomSeed          = randomseed;

            retutm.random_modification_select = this.X.getXBool(xutm, "Random", retutm.random_modification_select);

            return(retutm);
        }
Esempio n. 3
0
        public List <Scientrace.Trace> modifiedTraces(List <Scientrace.Trace> inputTraces, Scientrace.UniformTraceModifier modifier)
        {
            List <Scientrace.Trace> retTraces = new List <Scientrace.Trace>();

            foreach (Scientrace.Trace iTrace in inputTraces)
            {
                if (modifier.add_self)
                {
                    retTraces.Add(iTrace);
                }
                for (int node = 1; node <= modifier.modify_traces_count; node++)
                {
                    retTraces.Add(modifier.modify(iTrace, node, modifier.modify_traces_count));
                }
            }
            return(retTraces);
        }