https://courses.physics.illinois.edu/phys596/fa2016/StudentWork/Team6_final.pdf