示例#1
0
 public CustomTracesLightSource(ShadowScientrace.ShadowLightSource shadowObject) : base(shadowObject)
 {
     foreach (Scientrace.Trace aTrace in (List <Scientrace.Trace>)shadowObject.getObject("traces_list"))
     {
         aTrace.lightsource = this;
         this.addTrace(aTrace);
     }
 }
示例#2
0
        public LightSource(ShadowScientrace.ShadowLightSource aShadowLightSource)
        {
            this.setObjectEnvironment(aShadowLightSource.env);
            this.minimum_intensity_fraction = aShadowLightSource.getDouble("minimum_intensity_fraction", this.minimum_intensity_fraction);
            this.addTraceModifiers((IEnumerable <Scientrace.UniformTraceModifier>)aShadowLightSource.getObject("trace_modifiers", true));

            //AND it was put back like a normal ShadowClass object...
            //this.spectrum = aShadowLightSource.spectrum;
            this.spectrum = (Scientrace.LightSpectrum)aShadowLightSource.getObject("spectrum", !this.mandatory_spectrum);

            if (spectrum == null)
            {
                Console.WriteLine("WARNING: No spectrum given.");
            }
            this.efficiency_characteristics = (Scientrace.OpticalEfficiencyCharacteristics)aShadowLightSource.getObject("efficiency_characteristics");

            this.weighted_intensity = (double)(aShadowLightSource.getNDouble("weighted_intensity") ?? this.spectrum.total_intensity);
        }
        public SpiralLightSource(ShadowScientrace.ShadowLightSource shadowObject) : base(shadowObject)
        {
            int    ray_count = (int)shadowObject.getObject("ray_count");
            double loops     = shadowObject.getDouble("loops", -1);

            if (loops == -1)
            {
                loops = 1.0154 * Math.Pow(Math.PI * 2 * (1 - Math.Sqrt(((double)ray_count - 1) / (double)ray_count)), -0.5);
                Console.WriteLine("Number of loops for " + ray_count + " beams set to: {" + loops.ToString("#,0.000") + "}.");
            }

            this.paramInit(
                (Scientrace.Location)shadowObject.getObject("location"),    //center
                (Scientrace.UnitVector)shadowObject.getObject("direction"), //direction,
                (Scientrace.Plane)shadowObject.getObject("spiral_plane"),   //plane,
                ray_count,                                                  //linecount,
                (double)shadowObject.getObject("radius"),                   //radius,
                loops,                                                      //loops,
                (double)shadowObject.getObject("distance")                  //distance,
                //(Scientrace.LightSpectrum)shadowObject.getObject("spectrum")//spectrum
                );
        }