UIZE JavaScript Framework

TO DO - Uize.Curve.Mod

This is a TO DO document for the Uize.Curve.Mod module.

1. Uize.Curve.Mod.tame

1.1. - a curve function modifier that...

constrains a curve function so that its values are in the range of 0 to 1
guarantees that the value 0 is returned for the input value of 0, and that the value 1 is returned for the input value of 1

2. Uize.Curve.Mod.sample

generates a curve function that is a sample, with a specifiable degree of precision, of the specified curve function. This could be useful for curve functions that are performance intensive and where a finite precision might be acceptable. Can be lazy in generation, so values are only generated when needed - perhaps this is a parameter. Also possibly a parameter for interpolation between sample points when using curve function.

3. Uize.Curve.Mod.noise

3.1. - possible implementation...

_package.noise = function (_curveFunction,_noiseLevel) {
  /*** parameter defaulting ***/
    _curveFunction = _resolve (_curveFunction);
    if (_noiseLevel == _undefined) _noiseLevel = .25;

  function _noiseCurveFunction (_value) {
    function _getNoiseValue (_value) {
      var
        _cycles = 20,
        _cycle = ((_value / .001) % 20) / (_cycles - 1)
      ;
      if (!(Math.floor (_cycle) % 2)) _value = (_value + .05) % 1;
      return (Math.pow (_cycle,Math.abs (_value - 1 / (_cycle || .001) / ((1 - _value) || .0001),1)) / ((1 - _value) || .0001)) % 1;
    }
    return (_getNoiseValue (_value) + _getNoiseValue (((1 - _value) * Math.PI) % 1)) % 1;
  }

  return (
    !_noiseLevel
      ? _curveFunction
      : _noiseLevel == 1
        ? _noiseCurveFunction
        : function (_value) {
          return _blendFloats (_curveFunction (_value),_noiseCurveFunction (_value),_noiseLevel);
        }
  );
};