AccidentalNoise.ImplicitFractal.HybridMulti_CalculateWeights C# (CSharp) Method

HybridMulti_CalculateWeights() private method

private HybridMulti_CalculateWeights ( ) : void
return void
        private void HybridMulti_CalculateWeights()
        {
            for (var i = 0; i < Noise.MAX_SOURCES; ++i)
            {
                expArray[i] = Math.Pow(Lacunarity, -i * H);
            }

            // Calculate scale/bias pairs by guessing at minimum and maximum values and remapping to [-1,1]
            const double a = -1.0;
            const double b = 1.0;

            var minvalue = Offset - 1.0;
            var maxvalue = Offset + 1.0;
            var weightmin = Gain * minvalue;
            var weightmax = Gain * maxvalue;

            var scale = (b - a) / (maxvalue - minvalue);
            var bias = a - minvalue * scale;
            correct[0, 0] = scale;
            correct[0, 1] = bias;


            for (var i = 1; i < Noise.MAX_SOURCES; ++i)
            {
                if (weightmin > 1.00) weightmin = 1.00;
                if (weightmax > 1.00) weightmax = 1.00;

                var signal = (Offset - 1.0) * expArray[i];
                minvalue += signal * weightmin;
                weightmin *= Gain * signal;

                signal = (Offset + 1.0) * expArray[i];
                maxvalue += signal * weightmax;
                weightmax *= Gain * signal;


                scale = (b - a) / (maxvalue - minvalue);
                bias = a - minvalue * scale;
                correct[i, 0] = scale;
                correct[i, 1] = bias;
            }

        }