Returns a value of perlin noise given a point.
I have no idea about math behind this but code looks good so nice job :)
I have just small safety reminder (you are free to ignore it)
would be nice to make check for scale == 0 or iterations == 0 and early return 0 and maybe log error ?
just safe guard against division by 0 :)
This is really not perlin noise now. Perlin noise implies gradient noise.
I suggest renaming this function. Or use the perlin noise implementation in Noise2D.