In [ ]:
import batoid
import yaml
import os
import numpy as np
from ipywidgets import interact
import ipywidgets as widgets
import matplotlib.pyplot as plt
from mpl_toolkits.mplot3d import Axes3D
%matplotlib inline
In [ ]:
telescope = batoid.Optic.fromYaml("HSC.yaml")
In [ ]:
# Sanity check optic shifting
@interact(optic=widgets.Dropdown(
options=['SubaruHSC.HSC.WFC.G1',
'SubaruHSC.HSC.WFC.G2',
'SubaruHSC.HSC.WFC.ADC',
'SubaruHSC.HSC.WFC.ADC.ADC1',
'SubaruHSC.HSC.WFC.ADC.ADC2',
'SubaruHSC.HSC.WFC.G3',
'SubaruHSC.HSC.WFC.G4',
'SubaruHSC.HSC.WFC.G5',
'SubaruHSC.HSC.CAM.F',
'SubaruHSC.HSC.CAM.W',
'SubaruHSC.HSC.CAM.D'],
default='SubaruHSC.HSC.WFC.ADC'
),
gdx=widgets.FloatSlider(min=-1, max=1, step=0.01, value=0.2),
gdy=widgets.FloatSlider(min=-1, max=1, step=0.01, value=0.0),
gdz=widgets.FloatSlider(min=-1, max=1, step=0.01, value=0.0),
dthx=widgets.FloatSlider(min=-90, max=90, step=5, value=0.0),
dthy=widgets.FloatSlider(min=-90, max=90, step=5, value=0.0),
dthz=widgets.FloatSlider(min=-90, max=90, step=5, value=0.0),
ldx=widgets.FloatSlider(min=-1, max=1, step=0.01, value=0.0),
ldy=widgets.FloatSlider(min=-1, max=1, step=0.01, value=0.0),
ldz=widgets.FloatSlider(min=-1, max=1, step=0.01, value=0.0),
)
def shiftOptic(optic, gdx, gdy, gdz, dthx, dthy, dthz, ldx, ldy, ldz):
rot = batoid.RotZ(np.pi/180*dthz).dot(batoid.RotX(np.pi/180*dthx)).dot(batoid.RotY(np.pi/180*dthy))
perturbedTelescope = telescope.withGloballyShiftedOptic(optic, [gdx, gdy, gdz])
perturbedTelescope = perturbedTelescope.withLocallyRotatedOptic(optic, rot)
perturbedTelescope = perturbedTelescope.withLocallyShiftedOptic(optic, [ldx, ldy, ldz])
fig = plt.figure(figsize=(12, 12))
ax = fig.add_subplot(111, projection='3d')
perturbedTelescope['SubaruHSC.HSC'].draw3d(ax, c='k')
#And redraw the perturbed optic in red
perturbedTelescope[optic].draw3d(ax, c='r')
ax.set_xlim(-0.5, 0.5)
ax.set_ylim(-0.5, 0.5)
ax.set_zlim(13.5, 15.25)
ax.set_xlabel("x")
ax.set_ylabel("y")
ax.set_zlabel("z")
plt.show()
In [ ]: