Source: https://www.3dfractals.com/docs/Guillaume_Brouillette.pdf