Dynamic Ronchigrams

Scott Prahl

April 2021

[1]:
%matplotlib widget
import ipywidgets
import numpy as np
import matplotlib.pyplot as plt
from lenstest import ronchi
[2]:
D = 20*25.4
RoC = 160*25.4
z_offset = 2     # 2 mm beyond focus
lp_per_mm = 10
conic = 1
phi = np.radians(45)

ronchi.plot_ruling_and_screen(D,RoC,lp_per_mm,z_offset,conic,phi=phi)
plt.show()
[2]:
D = 20*25.4
RoC = 160*25.4

fig = plt.figure(figsize=(9,4))
ax = fig.add_subplot(1, 1, 1)

def update(conic=0, lpm = 20, z_offset=2, phid=0):
    fig.clear()
    phi = np.radians(phid)
    ronchi.plot_ruling_and_screen(D, RoC,lpm,z_offset,conic,phi=phi,init=False)
    fig.canvas.draw_idle()

ipywidgets.interact(update, conic = (-2,2,0.25), lpm=(1,40,1),z_offset=(-5,5,0.1),phid=(0,90,15));
[4]:
D = 20*25.4
z_offset = 2
x_offset = -0.03
conic = 1
phi = 0

fig = plt.figure(figsize=(8,4))
ax = fig.add_subplot(1, 1, 1)

def update(conic=0, x_offset = 20, z_offset=2, RoC=D):
    fig.clear()
    foucault.plot_knife_and_screen(D, RoC, x_offset, z_offset, conic, phi=phi, init=False)
    fig.canvas.draw_idle()


ipywidgets.interact(update, RoC=(D,1000,100), conic = (-1,1,0.02), x_offset=(-0.2,0.2,0.02), z_offset=(-5,5,0.1));