|
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) |