Пример #1
0
        /// <summary>
        /// Create a lens from a table.
        /// </summary>
        /// <param name="table">
        /// Rows: surfaces, ordered from front to back.
        /// Columns: CurvatureRadius, Thickness, NextRefractiveIndex, ApertureDiameter.
        /// </param>
        /// <param name="mediumRefractiveIndex"></param>
        /// <param name="scale"></param>
        /// <returns></returns>
        public static ComplexLens CreateFromSphericalElementTable(
            double?[,] table,
            double mediumRefractiveIndex,
            double scale)
        {
            var surfaceDefs = new List <SphericalElementSurfaceDefinition>();

            for (int surfaceIndex = 0; surfaceIndex < table.GetLength(0); surfaceIndex++)
            {
                var surface = new SphericalElementSurfaceDefinition();
                surface.CurvatureRadius     = table[surfaceIndex, 0];
                surface.Thickness           = table[surfaceIndex, 1].Value;
                surface.NextRefractiveIndex = table[surfaceIndex, 2].Value;
                surface.ApertureDiameter    = table[surfaceIndex, 3].Value;
                surfaceDefs.Add(surface);
            }
            return(Create(surfaceDefs, mediumRefractiveIndex, scale));
        }
Пример #2
0
 /// <summary>
 /// Create a lens from a table.
 /// </summary>
 /// <param name="table">
 /// Rows: surfaces, ordered from front to back.
 /// Columns: CurvatureRadius, Thickness, NextRefractiveIndex, ApertureDiameter.
 /// </param>
 /// <param name="mediumRefractiveIndex"></param>
 /// <param name="scale"></param>
 /// <returns></returns>
 public static ComplexLens CreateFromSphericalElementTable(
     double?[,] table,
     double mediumRefractiveIndex,
     double scale)
 {
     var surfaceDefs = new List<SphericalElementSurfaceDefinition>();
     for (int surfaceIndex = 0; surfaceIndex < table.GetLength(0); surfaceIndex++)
     {
         var surface = new SphericalElementSurfaceDefinition();
         surface.CurvatureRadius = table[surfaceIndex, 0];
         surface.Thickness = table[surfaceIndex, 1].Value;
         surface.NextRefractiveIndex = table[surfaceIndex, 2].Value;
         surface.ApertureDiameter = table[surfaceIndex, 3].Value;
         surfaceDefs.Add(surface);
     }
     return Create(surfaceDefs, mediumRefractiveIndex, scale);
 }