RayLab is my first iPad app appearing in the App Store. I plan on adding many more features. If you have suggestions about what capabilities will be most useful, post a comment here.

30 thoughts on “RayLab 1.0 now available in App Store

  1. Luke

    Thank you for this excellent app! It would be great to see the following features included in the future:
    – support for Fresnell lenses
    – precision (numerical) input for positioning / rotating the optical elements
    – custom glass materials
    – information about the physical units of parameters (position, diameter, etc) where applicable
    – export simulation results to PDF

    1. admin
      admin Post author

      Thank you for your suggestions. A couple of them were already in my plan (custom glass, and numerical position input). Look for these in the near future. The other suggestions may take a bit longer to implement.

      1. Jaš

        Great app, looking forward to custom glass, maybe dwg…

        1. Kamyar
          Kamyar Post author

          Thanks jas. As it so happens custom glass is in the next update which will hopefully be available within a week.

          1. Jaš

            Usefull update Kamyar try to price it apropriately 🙂
            Are you planing to enable importing custom lens shapes?

  2. VC

    A very useful tutorial application to check your ideas for optical system designs.

    I would definitely add the features indicated by Luke, plus:
    – apertures and field stops
    – Fabry-Perot filters
    – snapping to user-defined grid (rectangular/triangular/see vector-graphics program grids)

    I would also emphasize point 2 in Luke’s suggestions since it would really help very much!

  3. Hakko

    It seems like a really good app!
    but how do I apply a refracive index to a material? I downloaded the schott database but all glas have nd=0.000 & vd=0.00?

    1. Kamyar
      Kamyar Post author

      Hi Hakko,

      I just checked the App on my system and the glasses seem to correctly display nd and Vd. So my only guess is that there is a bug related to your specific environment. Could you tell me what version of iOS you are on. As well as the Language and Region options you have in the iPad general settings (Go to Settings-General-International). I have to check if the catalog has trouble with decimal point in other regional settings.


    2. Kamyar
      Kamyar Post author

      I was able to test the App with another regional setting (France) and can see the problem you reported. It is likely because of use of , instead of . as decimal point. I will fix it ASAP. It will take about a week for an update to be available in the App Store. In the mean time you can temporarily change your regional setting to United States to try out the Glass Catalogs.

      Thank you for reporting this bug.

    3. Kamyar
      Kamyar Post author

      This problem is resolved in version 1.09 which will became available in App Store today. Let me know if you continue to have issues.

  4. Stu

    Hey! I love this app – just what I have been looking for. Couple of requests though that could make this really powerful:

    * Can you increase the maximum permissabe wavelength to 2000nm as I work with lasers
    * do you think it would be possible to add Gaussian beam propagation (like Zemax) and then the possibility to model multi-moded beams. Big ask I know but that would be VERY cool
    * finally, could you actually write a step by step tutorial on how to set up a simple lens system, including how to set up the rays and set up the reporting graphics

    Many thanks and keep up the great work!


    1. Kamyar
      Kamyar Post author

      Hi Stu,

      1. I will increase the wavelength limit.
      2. If you are referring to display of beam width or spot size using analytical Gaussian beam equations (http://en.wikipedia.org/wiki/Gaussian_beam) that is something that I was planning on adding, but it is probably a month or two away. If you are referring to Physical Optics Propagation (http://www.radiantzemax.com/zemax/features/physical-optics), it is probably beyond the scope of RayLab, since it is fundamentally a different type of calculation.
      3. I am hoping to add more instructions to RayLab as time permits. For now here is a quick explanation of setting up the rays:

      All rays emanate from the first surface in the system (The Object surface) and travel until they reach the last surface (the Image surface). The radius of the Object surface determines how far apart the source point of the rays are. You can specify the number of wavelengths (N_wavelength), the number of source points (N_srcPt), and the number of fan rays (N_angle). Total number of rays are the product of these 3 values (N_wavelength * N_srcPt * N_angle). I would typically make two of these small, and the 3rd large. If you make all values large the app will become very slow.

      The wavelengths are interpolated between lambda1 and lambdan.
      The source points are interpolated between -radius and +radius of the source surface.
      There are two modes for setting the angle of the rays.
      * When the ‘Aim at Pupil’ is off the angle of the rays are interpolated between -theta and +theta where theta is controlled by the fan angle slider. In this mode rotating the source surface will change the direction which the rays are aimed.
      * When the ‘Aim at Pupil’ is on, the rays are aimed at the system’s Entrance Pupil. In this mode the fan angle slider actually controls how far apart the rays are on the entrance pupil. So at maximum value the rays reach the edge of the entrance pupil. Note that entrance pupil calculation are currently only valid for axial systems.


        1. Kamyar
          Kamyar Post author

          NP. And I am working on the Gaussian Beam calcs.

      1. Kamyar
        Kamyar Post author

        Hi Stu,

        RayLab 1.11 which is now available in the App Store adds ability to model Gaussian Beams. After you set up your lenses, tap the settings button, and turn on the switch for Gaussian Beam Analysis. You have to reduce the number of wavelengths, source points, and fan rays so that total rays is less than 4. You can then select the source surface and tap the surface properties button to change the w0, z0, and M2 of the source beam. To see the details near the waist you have to zoom in. Alternatively if your beam has a large M2, the waist is usually large.

        Try it out and let me know what you think.
        Thank you for this suggestion.

  5. AndyT

    I’d like to see an option to insert a background image, in jpg or png, so I could learn how some of the lenses I use are created. Nikon etc publish lens diagrams showing multiple lenses and groups, and looking at these by effectively tracing the image would help my understanding a lot. (I.e. Put a lens diagram in the background, create lenses in RayTrace to approximate the design)

  6. AndyT

    Doh! That should read …..’ And Ray Trace’ not ‘in RayTrace’

  7. Guy

    This is awesome. If this were an OSX app I would pay for it.

    One feature I’d request is increasing max number of rays. I’ve noticed rays stop reflecting after a large number of reflections. Also adding new components sometimes changes the ray trajectory.

    1. Kamyar
      Kamyar Post author

      Hi Guy,

      Thanks for your feedback. The limits on number of rays as well as max number of reflections are there to prevent the App from becoming unresponsive. When there are too many rays or too many reflections the calculations can become quite slow.

      The reason adding a component may change the direction of source rays is if you have turned on the option for “Aim Rays at Pupil”. When you add a new component the entrance pupil changes and hence the rays are aimed at the new entrance pupil. To avoid this, you can turn off the “Aim Rays at Pupil” option. Unfortunately, pupil calculation is only accurate for axial systems.

  8. Gujansky

    Nice app but I was looking for a DIY lens cutting “calculator”. Enter glass type, lens diameter, focal distance, power and get the final shape ready for grinding. Thanks for the app.

  9. Rani

    I made some accident modification on an optical system sample, and I lost the image side of it. I tried undo it but still didn’t get back to its original setting.
    How to go back to the original setting of each optical sample before any alteration??

    Thank you

    1. Kamyar
      Kamyar Post author

      Currently the Samples reset each time you upgrade to a new version of the RayLab. I will have to add a button for reseting them manually. But it might be a little while before I have a chance to do so.

    2. Kamyar
      Kamyar Post author

      Hi Rani, your request has been addressed in the latest version. RayLab (2.12) has an option in the help menu for resetting all the sample models.

  10. Alex Daniel

    Hi, first I would like to say, this is a great app. I have a question regarding custom glass. Is it possible to set the material to have a negative refractive index? My area of research is in matamaterials so if your app supports negative n it would be marvellous!

    1. Kamyar
      Kamyar Post author

      Hi Alex,

      Changing the custom glass to allow negative values is simple enough. The challenge is that I would then have to make sure the refraction equations behave correctly in that case, including special situations such as total internal reflection. I would not be too confident in the results. Since I don’t know much about meta materials this would require some research on my part.

    2. Kamyar
      Kamyar Post author

      Hi Alex,
      I have just submitted RayLab 2.03 to AppStore. It should allow you to model negative index using Custom Glass – Reduced Cauchy equation. Even though the slider only goes to 0, you can manually type in a negative number.
      It will probably take about a week before Apple approves the new version and it becomes available in AppStore.

  11. Neil Main

    I really like this app. One of the things I am playing with is an Axicon. Do you have any plans to include these?

    1. Kamyar
      Kamyar Post author

      Hi Neil,
      I had not heard of Axicons before. They seem very interesting. With a little search I found the following article https://web.archive.org/web/20091123101108/http://www.optics.arizona.edu/OPTI696/2005/axicon_Proteep.pdf

      On page 12 they explain how you would model an Axicon in Zemax using Standard Surface Model (Asphere) parameters. RayLab uses the same surface equation. So the same approach works in RayLab:

      Set radius of curvature (R) to a very small value. e.g. 0.01 or -0.01 depending on orientation desired. Do not use 0, since RayLab interprets that as infinite radius of curvature. If you go thru the math you will see assuming a small R reduces the equation to z = r/sqrt(-(1+K)). So by choosing a large negative K you get an Axicon.

      For example: Radius = 50, R=0.01, K=-33

      All the raytracing will behave correctly with this approach. But I would not trust the paraxial or gaussian beam calculations since they depend on thin lens approximation. Let me know how well this works for you.

  12. Mike

    Great app especially all the latest improvements. One feature that would help me would be an aperture.



    1. Kamyar
      Kamyar Post author

      Thanks for the suggestion Mike. Apertures will be in the next release (2.16).

Leave a reply


This site uses Akismet to reduce spam. Learn how your comment data is processed.