Adding graphs together in c++ (to generate fractal noise)

Viewed 23

I am trying to make a 1D fractal noise function. I have a function generating every single individual graph, but am struggling with how to add them together. I am following this tutorial https://web.archive.org/web/20160530124230/http://freespace.virgin.net/hugo.elias/models/m_perlin.htm

Here is my code for my final noise function

(I am using sfml, which is what the sf::vector2f are. It's just a vector of two floats, representing a coordinate.)

void fractalNoise() {
    
    std::vector<sf::Vector2f> allGraphs;
    std::vector<sf::Vector2f> singleNoise;

    float persistance = 0.8; //represents the decrease of amplitude with frequency.
                             //The closer to one, the less the amplitude decreases each iteration

    int nOOPM1 = 10; //number of iterations

    for (int i = 0; i < nOOPM1; i++) {
        float frequency = pow(2, i);
        float amplitude = pow(persistance, I);


//generate a random plots of noise, equidistant on the x, and random on the Y.
//the 3 is the interpolation method(ignore this), and the 1000 is how many points to draw

        singleNoise = this->interpolateNoise(
            this->generateNoise(frequency, 300 * amplitude), 3, 1000); 
between each point.

 

        allGraphs.insert(allGraphs.end(), singleNoise.begin(), singleNoise.end());
        
    }
    this->noiseGenerated = allGraphs; 
    //every pixel stored in noiseGenerated is rendered to a window
};

I understand that the allGraphs.insert is just putting the next graph after the current one, but I am unsure how to add each graph together. Because of the nature of fractal noise, and the fact my frequencies are always changing, I can't just add the noise points before interpolating them, as they will mostly have different x values

Any help would be appreciated

0 Answers
Related