rayopt icon indicating copy to clipboard operation
rayopt copied to clipboard

automatically propose stop

Open MaximilianHoffmann opened this issue 9 years ago • 3 comments

In paraxial_trace you write:

# TODO
    # * introduce aperture at argmax(abs(y_axial)/radius)
    #   or at argmin(abs(u_axial))

could this be done in an instance method e.g. paraxial_ray.find_stop or .find_aperture ?

MaximilianHoffmann avatar Jun 10 '16 11:06 MaximilianHoffmann

Yes. But the usefulness is very questionable. Everything depends so heavily on the stop location that just putting it where "the bulge is widest" (or flattest) is rather arbitrary. Do you do argmax(abs(y_marginal)) (would break for e.g. infinite object systems) or argmax(abs(y_marginal)/radius) which may also break for e.g. infinite objects and weirdly depends on potentially uncertain radii, or argmin(abs(u_marginal)) which would break for e.g. afocal systems or doubke-bulge systems...

jordens avatar Jun 10 '16 19:06 jordens

Ok. But why can't one use the aiming routine , which finds the marginal ray, to finde the first aperture one hits by increasing the angle? And if object is InfiniteConjugate aim in the reversed system?

MaximilianHoffmann avatar Jun 13 '16 08:06 MaximilianHoffmann

The aperture is not just chosen by some notion of "where the rays are clipped". That would just be related to the marginal ray. It is also where the chief ray crosses the axis. That's of crucial importance for aberrations and many paraxial quantities (special planes etc). Especially for e.g. slightly more wideangle systems. And then there are afocal and telecentric systems which also need special aiming.

But yes. This can be done. Though I haven't seen something like this in commercial packages (IIRC) and I suspect this is a bit too arbitrary to be generally useful.

jordens avatar Jun 13 '16 10:06 jordens