-
Notifications
You must be signed in to change notification settings - Fork 61
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
How to set decenter/tilt in a correct way #153
Comments
Hi @TLawu, First, I think the layout plot is misleading, if not wrong. So this is an issue. I'll look into this. Second, I presume your intent is to "float" the 2nd lens inside of the immersing medium. In this case, the entries for the second, reverse decenter need to be modified a bit. The reverse decenter is the correct choice for returning to the original axis. The angles are applied in reverse, making entry for this case simple. The translation, however needs adjustment. The translation between surfaces 4 and 5 is tilted by a 5 deg angle, so the distance along the original Z axis is cos(tilt)*lens_thickness. The change in the original thickness can be input as a Z-component of the decenter.
There is a method in seq_model to print all of the surface coordinates in a single, global, coordinate system. The format for each surface is the rotation matrix, following by the vertex coordinate vector.
It is also useful to use listobj() to get at all the data for an object.
I believe the raytrace results for the decentered model are correct, but the layout clearly isn't useful as it stands. I'll look into it. |
Dear Mike, Thanks for the quick response. When I need to shift and tilt the pupil, is it better to shift and tilt all other components (not the STOP itself)? Regards, |
Tjundewo, |
Dear Mike, Just to confirm, to decenter the stop surface, are decenter and reverse at the same surface number? sm.ifcs[3].decenter = srf.DecenterData('decenter')
sm.ifcs[3].decenter = srf.DecenterData('reverse')
sm.ifcs[3].decenter.dec = np.array([0., 0.5, 0.])
sm.ifcs[3].decenter.dec = np.array([0., 0.5, 0.]) Thank you. |
For this situation, the 'dec and return'
This |
Dear Mike, Great. sm.ifcs[3].decenter = srf.DecenterData('dec and return')
sm.ifcs[3].decenter.dec = np.array([0., 0.5, 0.])
sm.ifcs[3].decenter.euler = np.array([5., 0., 0.]) and since only one surface, then no need to calculate offset as explained above. I do hope also for the improvement of the layout. Additionally, I can set pupil float by stop using wfe = rayoptics.raytr.analyses.eval_wavefront(opm, fld, wvl, foc, num_rays=65) Best regards, Tjundewo |
Yes, this works if the surface is tilted also. MikeOn Aug 19, 2024, at 11:44 PM, TLawu ***@***.***> wrote:
Dear Mike,
Great.
This 'dec and return' solve my doubt for decentering/tilting for one surface.
I assume 'dec and return' applied also for tilt
sm.ifcs[3].decenter = srf.DecenterData('dec and return')
sm.ifcs[3].decenter.dec = np.array([0., 0.5, 0.])
sm.ifcs[3].decenter.euler = np.array([5., 0., 0.])
and since only one surface, then no need to calculate offset as explained above.
I do hope also for the improvement of the layout.
Best regards,
Tjundewo
—Reply to this email directly, view it on GitHub, or unsubscribe.You are receiving this because you commented.Message ID: ***@***.***>
|
Dear Mike,
I raised an issued in mjhoptics/ray-optics-notebook.
Since it didn't have other issues, then I put the link here.
mjhoptics/ray-optics-notebooks#16
Hopefully, I can get the solution.
Best regards,
Tjundewo
The text was updated successfully, but these errors were encountered: