Exemple #1
0
        public double Get(double x, double y, double z)
        {
            double value = 1.0;

            x *= _frequency;
            y *= _frequency;
            z *= _frequency;

            for (int i = 0; i < _numOctaves; ++i)
            {
                value *= _source.Get(x, y, z) * _exparray[i] + 1.0;
                x     *= _lacunarity;
                y     *= _lacunarity;
                z     *= _lacunarity;
            }

            if (_withValueRemap)
            {
                FractalRemap remap = _fractalRemap[_numOctaves - 1];
                if (base._defaultRange == enuBaseNoiseRange.MinOneToOne)
                {
                    return(value * remap.Scale + remap.Bias);
                }
                else
                {
                    return(((value * remap.Scale + remap.Bias) + 1.0) / 2.0);
                }
            }
            else
            {
                return(value);
            }
        }
        public double Get(double x, double y)
        {
            double value = 0.0, signal;

            x *= _frequency;
            y *= _frequency;

            for (int i = 0; i < _numOctaves; ++i)
            {
                signal  = _source.Get(x, y);
                signal  = _offset - Math.Abs(signal);
                signal *= signal;
                value  += signal * _exparray[i];

                x *= _lacunarity;
                y *= _lacunarity;
            }

            if (_withValueRemap)
            {
                FractalRemap remap = _fractalRemap[_numOctaves - 1];
                if (base._defaultRange == enuBaseNoiseRange.MinOneToOne)
                {
                    return(value * remap.Scale + remap.Bias);
                }
                else
                {
                    return(((value * remap.Scale + remap.Bias) + 1.0) / 2.0);
                }
            }
            else
            {
                return(value);
            }
        }
Exemple #3
0
        public double Get(double x, double y, double z, double w)
        {
            double value, signal, weight;

            x *= _frequency;
            y *= _frequency;
            z *= _frequency;
            w *= _frequency;

            value  = _source.Get(x, y, z, w) + _offset;
            weight = _gain * value;
            x     *= _lacunarity;
            y     *= _lacunarity;
            z     *= _lacunarity;
            w     *= _lacunarity;

            for (int i = 1; i < _numOctaves; ++i)
            {
                if (weight > 1.0)
                {
                    weight = 1.0;
                }
                signal  = (_source.Get(x, y, z, w) + _offset) * _exparray[i];
                value  += weight * signal;
                weight *= _gain * signal;
                x      *= _lacunarity;
                y      *= _lacunarity;
                z      *= _lacunarity;
                w      *= _lacunarity;
            }

            if (_withValueRemap)
            {
                FractalRemap remap = _fractalRemap[_numOctaves - 1];
                if (base._defaultRange == enuBaseNoiseRange.MinOneToOne)
                {
                    return(value * remap.Scale + remap.Bias);
                }
                else
                {
                    return(((value * remap.Scale + remap.Bias) + 1.0) / 2.0);
                }
            }
            else
            {
                return(value);
            }
        }