* in the sequence it is also possible to reuse elements or surfaces, this is for example useful for defining a laser resonator or if an element is to be travelled more than once (like lenses in an interferometric setup)
* in the sequence it is also possible to reuse elements (not yet implemented in reverse direction) or surfaces, this is for example useful for defining a laser resonator or if an element is to be travelled more than once (like lenses in an interferometric setup)
* optionsdict is usually empty. There are two options possible:
* "is_mirror" (True, False) -> changes the refraction into a reflection
* "is_stop" (True, False) -> used to determine stop for ray aiming
Then raytrace via `raytrace` (or `Aimy` which is highly experimental and located in `pyrateoptics.aim`) and draw via `draw`. `raytrace` and `draw` are defined in `pyrateoptics.__init__.py`.
For setting up your own system, it is recommended to use one of the convenience functions (also defined in `pyrateoptics.__init__.py`) `build_simple_optical_system` or `build_rotational_symmetric_optical_system` for avoiding all the administrative overhead given above (see also the code snippets provided in README.md).
For setting up your own system, it is recommended to use one of the convenience functions (also defined in `pyrateoptics.__init__.py`) `build_simple_optical_system` or `build_rotationally_symmetric_optical_system` for avoiding all the administrative overhead given above (see also the code snippets provided in README.md).
It is further recommended to use an optical system setup by these functions
as a starting point and modify its properties afterwards directly.