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); }
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); }