I have been working with a couple of implementations of Simplex noise, trying to make sense of it so I can describe it in the technical specification. I've made some decent progress, even. I'm at the point were I could grab the java implementation, port it to c++ and get it to work.
But I won't.
The bit I'm at right now is the attenuation function. After I've figured out the influence of each vertex of a simplex on a point within it, the point on the gradient where it falls for each, I have to attenuate the gradient so that the vertex's influence ends at the simplex and doesn't spill over. While I grasp why this is necessary, I'm not so certain about the numbers I saw being used in other implementations. They all agree, so I expect I can figure this out easily enough. But I'm trying to reach that point first.
There definitely is some merit to writing this all down, as opposed to trying to work it out in my mind as I code it. I'll have to add drawing when I get the chance.
Back to trigonometry, I guess.