| import gradio as gr | |
| from backend.nonreflecting_ray_tracing import nonreflecting_plotter | |
| from backend.reflecting_ray_tracing import reflecting_plotter | |
| description1 = ( | |
| "A source of **light** placed at the **origin**. A spherical **non-Reflecting** surface placed in front it." | |
| "**Change ANY Parameter to get it working.**" | |
| ) | |
| iface1 = gr.Interface( | |
| fn = nonreflecting_plotter, | |
| inputs=[ | |
| gr.Number(label="Circle Center X (a)", value=20, info="X coordinate of Circle center"), | |
| gr.Number(label="Circle Center Y (b)", value=20, info="Y coordinate of Circle center"), | |
| gr.Number(label="Radius (r)", value=15, info="Radius of the circle"), | |
| gr.Slider(minimum=3, maximum=1000, step=1, label="Number of Rays", value=50, info="Number of rays to be plotted in total"), | |
| gr.Radio(label="Remove Clutter", choices=["Yes", "No"], value="No", info="Only keep rays that are INCIDENT by the surface."), | |
| ], | |
| outputs=[ | |
| gr.Image(label="Ray Tracing Output"), | |
| gr.Number(label="Fraction of Incident Rays", info="Out of 100 rays, how many are incident on the surface"), | |
| ], | |
| live=True, | |
| title="Non-Reflective Ray Tracing", | |
| description=description1, | |
| ) | |
| description2 = ("A source of **light** placed at the **origin**. A spherical **Reflecting surface** placed in front it. This interface simulates the rays interaction with the Reflecting surface." | |
| "**Change ANY Parameter to get it working.**" | |
| ) | |
| iface2 = gr.Interface( | |
| fn = reflecting_plotter, | |
| inputs=[ | |
| gr.Number(label="Circle Center X (a)", value=20, info="X coordinate of Circle center"), | |
| gr.Number(label="Circle Center Y (b)", value=20, info="Y coordinate of Circle center"), | |
| gr.Number(label="Radius (r)", value=15, info="Radius of the circle"), | |
| gr.Slider(minimum=3, maximum=1000, step=1, label="Number of Rays", value=50, info="Number of rays to be plotted in total"), | |
| gr.Radio(label="Remove Clutter", choices=["Yes", "No"], value="No", info="Only keep rays that are REFLECTED to the surface."), | |
| ], | |
| outputs=[ | |
| gr.Image(label="Ray Tracing Output"), | |
| gr.Number(label="Fraction of Reflected Rays", info="Out of 100 rays, how many get reflected by the surface"), | |
| ], | |
| live=True, | |
| title="Reflective Ray Tracing", | |
| description=description2, | |
| ) | |
| combinedInterface = gr.TabbedInterface([iface1, iface2], | |
| ['Non-Reflective Ray Tracing', 'Reflective Ray Tracing'] | |
| ) | |
| combinedInterface.launch(share=False) |