Exemple #1
0
        public ILayerMasked Do(INoiseParameters param, Vector2 size)
        {
            var dt = DateTime.Now.Millisecond;

            System.Diagnostics.Debug.Print(dt + "Rand" + _rand.NextD(1, 2));

            var           pow      = (int)JryMath.Max(JryMath.Ceil(JryMath.Log(size.X, 2)), JryMath.Ceil(JryMath.Log(size.Y, 2)));
            int           sizePow2 = (int)JryMath.Pow(2, pow) + 1;
            Layer2DObject layer    = new Layer2DObject(sizePow2, sizePow2);

            setupBaseDS(sizePow2, layer, _rand);
            var par = param.BaseAmplitude * param.Amplitude;

            ds(layer, sizePow2, par, param, _rand);


            var croped = new Layer2DObject(size);

            for (int y = 0; y < size.Y; y++)
            {
                for (int x = 0; x < size.X; x++)
                {
                    croped[x, y] = layer[x, y];
                }
            }
            return(croped);
        }
Exemple #2
0
        private void ds(Layer2DObject layer, int sizePow2, float ba, INoiseParameters np, IRandom2 rand)
        {
            int size = sizePow2 - 1;
            int log  = (int)JryMath.Log(size, 2);

            // HACK
            var x = np as DsNoiseParameters;

            for (int l = 0; l < log; l++)
            {
                if (l == 0 && x != null)
                {
                    hackeddiamond(layer, ba, x.HillProbability);
                }
                else
                {
                    diamond(layer, size, ba, l, rand);
                }


                square(layer, size, ba, l, rand);
                ba *= np.Amplitude;
                if (l >= np.ToDepth)
                {
                    ba *= np.Amplitude;
                }
            }
        }
Exemple #3
0
 public PerlinNoise(INoiseParameters noiseParameters)
 {
     _rand            = noiseParameters.Random;
     _noiseParameters = noiseParameters;
 }
Exemple #4
0
 public INoise Create(INoiseParameters param)
 {
     return(new PerlinNoise(param));
 }