public Form1() { InitializeComponent(); Bench = MakeDoubleGaussLens(); //Bench.Elements.Convex = false; Bench.IncidentRay = new SphericLens.Ray(new SphericLens.Point(200, 20), new SphericLens.Vector(-20, 5)); //this.KeyDown += new KeyEventHandler(pictureResult.KeyPressed); rayDirectionPhiNumericUpDown.Value = (decimal)(Bench.IncidentRay.Direction.Phi % (2 * Math.PI)); SphericLens.Vector originAsVector = SphericLens.Vector.FromPoint(Bench.IncidentRay.Origin); rayOriginPhiNumericUpDown.Value = (decimal)originAsVector.Phi; rayOriginRadiusNumericUpDown.Value = (decimal)originAsVector.Radius; }
private SphericLens.OpticalBench MakeBiconvexLens() { SphericLens.OpticalBench bench = new SphericLens.OpticalBench(); // bench.LensCenter = -100.0; SphericLens.SphericalCap element0 = new SphericLens.SphericalCap() { Convex = true, Radius = 150.0, Aperture = 100.0, NextRefractiveIndex = SphericLens.RefractiveIndices.CROWN_GLASS, }; bench.Elements.Add(element0); element0.DistanceToNext = 2 * element0.Thickness; bench.Elements.Add( new SphericLens.SphericalCap() { Convex = false, Radius = 150.0, Aperture = 100.0, NextRefractiveIndex = SphericLens.RefractiveIndices.AIR, } ); return(bench); }
private SphericLens.OpticalBench MakeBiconvexLens() { SphericLens.OpticalBench bench = new SphericLens.OpticalBench(); // bench.LensCenter = -100.0; SphericLens.SphericalCap element0 = new SphericLens.SphericalCap() { Convex = true, Radius = 150.0, Aperture = 100.0, NextRefractiveIndex = SphericLens.RefractiveIndices.CROWN_GLASS, }; bench.Elements.Add(element0); element0.DistanceToNext = 2 * element0.Thickness; bench.Elements.Add( new SphericLens.SphericalCap() { Convex = false, Radius = 150.0, Aperture = 100.0, NextRefractiveIndex = SphericLens.RefractiveIndices.AIR, } ); return bench; }
private SphericLens.OpticalBench MakeDoubleGaussLens() { SphericLens.OpticalBench bench = new SphericLens.OpticalBench(); // bench.LensCenter = -100.0; bench.Elements.Add( new SphericLens.SphericalCap() { Convex = true, Radius = 58.950, DistanceToNext = 7.520, NextRefractiveIndex = 1.670, Aperture = 50.4, } ); bench.Elements.Add( new SphericLens.SphericalCap() { Convex = true, Radius = 169.660, DistanceToNext = 0.240, NextRefractiveIndex = SphericLens.RefractiveIndices.AIR, Aperture = 50.4, } ); bench.Elements.Add( new SphericLens.SphericalCap() { Convex = true, Radius = 38.550, DistanceToNext = 8.050, NextRefractiveIndex = 1.670, Aperture = 46.0, } ); bench.Elements.Add( new SphericLens.SphericalCap() { Convex = true, Radius = 81.540, DistanceToNext = 6.550, NextRefractiveIndex = 1.699, Aperture = 46.0, } ); bench.Elements.Add( new SphericLens.SphericalCap() { Convex = true, Radius = 25.500, DistanceToNext = 11.410 + 9.0, NextRefractiveIndex = SphericLens.RefractiveIndices.AIR, Aperture = 36.0, } ); bench.Elements.Add( new SphericLens.CircularStop() { DistanceToNext = 9.0, NextRefractiveIndex = SphericLens.RefractiveIndices.AIR, Aperture = 34.2, } ); bench.Elements.Add( new SphericLens.SphericalCap() { Convex = false, Radius = 28.990, DistanceToNext = 2.360, NextRefractiveIndex = 1.603, Aperture = 34.0, } ); bench.Elements.Add( new SphericLens.SphericalCap() { Convex = true, Radius = 81.540, DistanceToNext = 12.130, NextRefractiveIndex = 1.658, Aperture = 40.0, } ); bench.Elements.Add( new SphericLens.SphericalCap() { Convex = false, Radius = 40.770, DistanceToNext = 0.380, NextRefractiveIndex = SphericLens.RefractiveIndices.AIR, Aperture = 40.0, } ); bench.Elements.Add( new SphericLens.SphericalCap() { Convex = true, Radius = 874.130, DistanceToNext = 6.440, NextRefractiveIndex = 1.717, Aperture = 40.0, } ); bench.Elements.Add( new SphericLens.SphericalCap() { Convex = false, Radius = 79.460, NextRefractiveIndex = SphericLens.RefractiveIndices.AIR, Aperture = 40.0, } ); double scaleFactor = 3.0; bool aperturesGivenAsDiameter = true; foreach (SphericLens.OpticalElement element in bench.Elements) { double apertureScaleFactor = scaleFactor * (aperturesGivenAsDiameter ? 0.5 : 1.0); // TODO: hey, this is ugly!!! if (element is SphericLens.SphericalCap) { SphericLens.SphericalCap cap = element as SphericLens.SphericalCap; cap.Radius *= scaleFactor; cap.Aperture *= apertureScaleFactor; } else if (element is SphericLens.CircularStop) { SphericLens.CircularStop stop = element as SphericLens.CircularStop; stop.Aperture *= apertureScaleFactor; } element.DistanceToNext *= scaleFactor; } return(bench); }
private SphericLens.OpticalBench MakeDoubleGaussLens() { SphericLens.OpticalBench bench = new SphericLens.OpticalBench(); // bench.LensCenter = -100.0; bench.Elements.Add( new SphericLens.SphericalCap() { Convex = true, Radius = 58.950, DistanceToNext = 7.520, NextRefractiveIndex = 1.670, Aperture = 50.4, } ); bench.Elements.Add( new SphericLens.SphericalCap() { Convex = true, Radius = 169.660, DistanceToNext = 0.240, NextRefractiveIndex = SphericLens.RefractiveIndices.AIR, Aperture = 50.4, } ); bench.Elements.Add( new SphericLens.SphericalCap() { Convex = true, Radius = 38.550, DistanceToNext = 8.050, NextRefractiveIndex = 1.670, Aperture = 46.0, } ); bench.Elements.Add( new SphericLens.SphericalCap() { Convex = true, Radius = 81.540, DistanceToNext = 6.550, NextRefractiveIndex = 1.699, Aperture = 46.0, } ); bench.Elements.Add( new SphericLens.SphericalCap() { Convex = true, Radius = 25.500, DistanceToNext = 11.410 + 9.0, NextRefractiveIndex = SphericLens.RefractiveIndices.AIR, Aperture = 36.0, } ); bench.Elements.Add( new SphericLens.CircularStop() { DistanceToNext = 9.0, NextRefractiveIndex = SphericLens.RefractiveIndices.AIR, Aperture = 34.2, } ); bench.Elements.Add( new SphericLens.SphericalCap() { Convex = false, Radius = 28.990, DistanceToNext = 2.360, NextRefractiveIndex = 1.603, Aperture = 34.0, } ); bench.Elements.Add( new SphericLens.SphericalCap() { Convex = true, Radius = 81.540, DistanceToNext = 12.130, NextRefractiveIndex = 1.658, Aperture = 40.0, } ); bench.Elements.Add( new SphericLens.SphericalCap() { Convex = false, Radius = 40.770, DistanceToNext = 0.380, NextRefractiveIndex = SphericLens.RefractiveIndices.AIR, Aperture = 40.0, } ); bench.Elements.Add( new SphericLens.SphericalCap() { Convex = true, Radius = 874.130, DistanceToNext = 6.440, NextRefractiveIndex = 1.717, Aperture = 40.0, } ); bench.Elements.Add( new SphericLens.SphericalCap() { Convex = false, Radius = 79.460, NextRefractiveIndex = SphericLens.RefractiveIndices.AIR, Aperture = 40.0, } ); double scaleFactor = 3.0; bool aperturesGivenAsDiameter = true; foreach (SphericLens.OpticalElement element in bench.Elements) { double apertureScaleFactor = scaleFactor * (aperturesGivenAsDiameter ? 0.5 : 1.0); // TODO: hey, this is ugly!!! if (element is SphericLens.SphericalCap) { SphericLens.SphericalCap cap = element as SphericLens.SphericalCap; cap.Radius *= scaleFactor; cap.Aperture *= apertureScaleFactor; } else if (element is SphericLens.CircularStop) { SphericLens.CircularStop stop = element as SphericLens.CircularStop; stop.Aperture *= apertureScaleFactor; } element.DistanceToNext *= scaleFactor; } return bench; }