示例#1
0
        /// <summary>
        /// Construct and initialise a fractal generator
        /// </summary>
        /// <param name="frequency">The frequency of the first octave</param>
        /// <param name="lacunarity">The frequency multiplier between successive octaves. Experiment between 1.5 - 3.5.</param>
        /// <param name="octaves">The amount of detail in the fractal - more octaves mean more detail and longer calc time.</param>
        /// <param name="persistance">The roughness of the fractal noise. Controls how quickly amplitudes diminish for successive octaves. 0..1.</param>
        /// <param name="seed">Seed - different seeds generate replicable different fractals</param>
        /// <param name="type">The type of generator being used</param>
        public FractalGenerator(float frequency, float lacunarity, int octaves, float persistance, float seed, Fractals type)
        {
            m_frequency   = frequency;
            m_lacunarity  = lacunarity;
            m_octaves     = octaves;
            m_persistence = persistance;
            m_seed        = seed;
            switch (type)
            {
            case Fractals.Perlin:
                m_noiseCalculator = GetValue_Perlin;
                break;

            case Fractals.Billow:
                m_noiseCalculator = GetValue_Billow;
                break;

            case Fractals.RidgeMulti:
                CalcSpectralWeights();
                m_noiseCalculator = GetValue_RidgedMulti;
                break;

            default:
                m_noiseCalculator = GetValue_Perlin;
                break;
            }
        }
示例#2
0
        /// <summary>
        /// Set some reasonable defaults for the fractal type
        /// </summary>
        public void SetDefaults()
        {
            switch (m_fractalType)
            {
            case Fractals.Perlin:
            {
                m_frequency       = 1f;
                m_lacunarity      = 2f;
                m_octaves         = 6;
                m_persistence     = 0.5f;
                m_seed            = 0;
                m_noiseCalculator = GetValue_Perlin;
                break;
            }

            case Fractals.Billow:
            {
                m_frequency       = 1f;
                m_lacunarity      = 2f;
                m_octaves         = 6;
                m_persistence     = 0.5f;
                m_seed            = 0;
                m_noiseCalculator = GetValue_Billow;
                break;
            }

            case Fractals.RidgeMulti:
            {
                m_frequency  = 1f;
                m_lacunarity = 2f;
                m_octaves    = 6;
                m_seed       = 0;
                CalcSpectralWeights();
                m_noiseCalculator = GetValue_RidgedMulti;
                break;
            }
            }
        }