/* * public FresnelLensRing(Object3dCollection parent, MaterialProperties mprops, * Scientrace.Location lens_sphere_location, double lens_sphere_radius, * double lens_sphere_radians_min, double lens_sphere_radians_max, * Scientrace.UnitVector orientation_from_sphere_center) : base (parent, mprops) { * this.paramInit(lens_sphere_location, lens_sphere_radius, lens_sphere_radians_min, lens_sphere_radians_max, orientation_from_sphere_center); * } * * /// <summary> * /// Factory method that creates a new FresnelLensRing based on the properties of another FresnelLensRing * /// but mirrored about the flat plane (flatBottomBorder). * /// </summary> * /// <returns> * /// The new FresnelLensRing * /// </returns> * /// <param name='aFresnelLensRing'> * /// A FresnelLensRing to base the (copied) properties upon. * /// </param> * public static FresnelLensRing newOppositeDirectionRing(FresnelLensRing aFresnelLensRing) { * Object3dCollection parent = aFresnelLensRing.parent; * MaterialProperties mprops = aFresnelLensRing.materialproperties; * Scientrace.Location lens_sphere_location = aFresnelLensRing.sphereLoc + (aFresnelLensRing.orientation*aFresnelLensRing.getDistanceToPlanoCenter()*2); * double lens_sphere_radius = aFresnelLensRing.sphereRadius; * double lens_sphere_radians_min = aFresnelLensRing.radiansMin; * double lens_sphere_radians_max = aFresnelLensRing.radiansMax; * Scientrace.UnitVector orientation_from_sphere_center = aFresnelLensRing.orientation.negative(); * return new FresnelLensRing(parent, mprops, lens_sphere_location, lens_sphere_radius, lens_sphere_radians_min, lens_sphere_radians_max, orientation_from_sphere_center); * } */ public FresnelLensRing(ShadowScientrace.ShadowObject3d shadowObject) : base(shadowObject) { switch (shadowObject.factory_id) { case "SphereCenterAndRadians": this.shadowFac_SphereCenter_And_Radians(shadowObject); break; case "PlanoCenterAndRadians": this.shadowFac_PlanoCenter_And_Radians(shadowObject); break; default: throw new ArgumentOutOfRangeException("Factory method {" + shadowObject.factory_id + "} not found for " + shadowObject.typeString()); } //General stuff: this.x3dCurvedSegments = shadowObject.getInt("draw_3d_segment_linecount", this.x3dCurvedSegments); }