library(ggplot2)
library(knitr)
library(reshape2)
opts_chunk$set(fig.width=6, fig.height=3.71, dpi=600, dev=c('png', 'pdf'), fig.path="multilayer_tirf_figures/")

n1 <-  1.518
n2 <-  1.4
n3 <-  1.33

suppressWarnings({
theta1 <-  seq(50, 70, 0.1)
theta2 <-  asin(n1 * sin(theta1 * pi / 180) / n2) * 180 / pi
theta3 <-  asin(n2 * sin(theta2 * pi / 180) / n3) * 180 / pi
})

df <- data.frame(theta1=theta1, Oil=theta2, PBS=theta3)
df[is.na(df)] <- 90
df_melt <- melt(df, id.vars='theta1')
colnames(df_melt)[2] <- "Medium"
colnames(df_melt)[3] <- "Refracted"
ggplot(df_melt, aes(x=theta1, y=Refracted, col=Medium)) + geom_line() + theme_bw() + xlab('Incident angle / degrees') + ylab('Refracted angle / degrees')

Oil critical angle: 67.2596573

PBS critical angle: 71.8051277

Effective PBS critical illuminatation: 61.181708