-
Notifications
You must be signed in to change notification settings - Fork 71
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
Passing wavefronts from one OpticalSystem to another #280
Comments
Thought about this some more. Possibly the right mental model here is to think of optical systems as linear operators acting on wavefronts. That's true mathematically, but not in how the code here is currently implemented. One could imagine a function on an optical system, maybe call it
That would make it easy to compose optical systems arbitrarily:
The current function If we wanted to do something like the above, in some ways it would be simple to re-cast All this needs further discussion anyway. |
@sdwill and @douglase - I'd appreciate some feedback & thoughts on this one. FYI I've got a version of the above implemented now, and will be making a PR for comments shortly. It's a moderately substantial refactoring, which pulls out most of the contents of That new function is tentatively named " Stand by for the PR soon. |
This one's tricky. Issue raised by @sdwill:
Right now there is no way to "connect together" multiple optical systems, in the sense of taking an output wavefront from a propagation through one system, and feeding it into a propagation through another system. This could be useful in a variety of contexts including
input_wavefront
function.The complex wavefront output from a given optical system can be obtained using the
retain_final
parameter tocalc_psf
. But there is no easy way to hand that in to another system.Possible enhancements to address this might include one or more of the following alternatives:
input_wavefront
with a function that grabs some other existing wavefront as a starting point. Potentially such a function might even run a completely different other system recursively to get its starting wavefront.CompoundOpticalSystem
, which could work similarly toCompoundOpticalElement
to iterate over multiple other systems and act to glue them together into something that acts like a larger whole.Any of the above might have to deal with potential issues of resampling, padding, and other possible inconsistencies of pixel grid sampling between the different stages of calculation.
The text was updated successfully, but these errors were encountered: