Here is the White Paper I'm basing this off of.
It took a lot of iterations to get this working. I wasn't yet familiar with a lot of the trignometric Unreal Math nodes before delving in to this project. I also had to fix a few edge cases that the original paper didn't cover.