コード例 #1
0
ファイル: DiamondSquare.cs プロジェクト: jaroslavknotek/ts
        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);
        }
コード例 #2
0
        private IEnumerable <IntVector2> getLocalMaximaRecord(ILayer layer, int amount)
        {
            var someSprings = new List <IntVector2>();
            var x           = new  HeapWrapper();

            _layerUtility.IterateValues(layer, (cor, val) => x.Add(-val.Value, cor));


            var upper10Percent = layer.Resolution.X * layer.Resolution.Y / 5;
            var takeEveryNth   = (int)JryMath.Ceil(upper10Percent / (float)amount);

            for (int i = 0; i < upper10Percent; i++)
            {
                var item = x.Get();
                if (i % takeEveryNth == 0)
                {
                    someSprings.Add(item);
                }
            }
            return(someSprings);
        }