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); }
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); }