pic.set_xlim(-110, 360) mirrors = genmirrors(geometry) pathplots, mirrorplots = [], [] for o in [-omega, omega, 0]: path = pol.straightline(geometry['focus'], o).mirrorpath(mirrors).T c = 'red' if o else 'darkgreen' pathplots.append(pic.plot(path[0], path[1], '-', color=c, lw=2)[0]) if not o: mirrors2 = genmirrors2(path.T[1:5], geometry['angle']) for i, m in enumerate(mirrors2): M = np.array([m.goto(-geometry['msize'][i]), m.goto(geometry['msize'][i])]) mirrorplots.append(pic.plot(M[:, 0], M[:, 1], '-', color='black', lw=2)[0]) # }}} # {{{ polarization and reflectivity mirror = pol.mirror(mirrordef) angles = np.arange(np.pi / 4, np.pi / 2, .01) plotangle = np.rad2deg(np.pi / 2 - angles) Rd = np.array([mirror.get_Rd(a) for a in angles]) pic2 = fig.add_subplot(212) # angle-direction is reversed (grazing incidence vs. normal incidence) DoP = np.sin(4 * Rd[:, 2]) plot_DoP = pic2.plot(plotangle, DoP, lw=2, color='darkviolet') # pic2.axhline(90, ls='-.', color='black') pic2.set_xlabel('incidence angle (deg)') pic2.set_ylabel('total phasediff (deg)') m1 = pic2.axvline(np.rad2deg(geometry['angle']), color='darkgreen', lw=2) m2 = pic2.axvline(np.rad2deg(geometry['angle'] - omega), color='red', lw=2) m3 = pic2.axvline(np.rad2deg(geometry['angle'] + omega), color='red', lw=2) pic3 = pic2.twinx() pic3.set_ylabel('total reflectivity')