{ "cells": [ { "cell_type": "markdown", "metadata": {}, "source": [ "# Parabolic Mirror" ] }, { "cell_type": "code", "execution_count": 1, "metadata": {}, "outputs": [], "source": [ "import numpy as np\n", "\n", "from optiland import optic" ] }, { "cell_type": "code", "execution_count": null, "metadata": {}, "outputs": [], "source": [ "# Initialize an optic system\n", "system = optic.Optic()\n", "\n", "# add surfaces to the system\n", "system.surfaces.add(index=0, thickness=np.inf) # object at infinity\n", "\n", "# conic=-1 --> parabolic surface\n", "system.surfaces.add(\n", " index=1,\n", " thickness=-50,\n", " radius=-100,\n", " conic=-1,\n", " material=\"mirror\",\n", " is_stop=True,\n", ")\n", "system.surfaces.add(index=2)\n", "\n", "# add aperture\n", "system.set_aperture(aperture_type=\"EPD\", value=42)\n", "\n", "# add field\n", "system.fields.set_type(field_type=\"angle\")\n", "system.fields.add(y=0)\n", "\n", "# add wavelength\n", "system.wavelengths.add(value=0.587, is_primary=True)" ] }, { "cell_type": "code", "execution_count": 3, "metadata": {}, "outputs": [ { "data": { "image/png": "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", "text/plain": [ "
" ] }, "metadata": {}, "output_type": "display_data" } ], "source": [ "system.draw(num_rays=4)" ] } ], "metadata": { "kernelspec": { "display_name": ".venv", "language": "python", "name": "python3" }, "language_info": { "codemirror_mode": { "name": "ipython", "version": 3 }, "file_extension": ".py", "mimetype": "text/x-python", "name": "python", "nbconvert_exporter": "python", "pygments_lexer": "ipython3", "version": "3.11.1" } }, "nbformat": 4, "nbformat_minor": 2 }