TO DO - Uize.Math.Blend
This is a TO DO document for the Uize.Math.Blend
module.
1. Node Level Defaults for Compound Curves and Quantization
For compound curves and quantization, a way to specify a default for all properties of an object, when an object is specified in order to specify curves or quantization for some properties.
EXAMPLE
quantization:{ '*':1, opacity:0 }
Without this ability, if you wanted quantization to be 0 for opacity, but 1 for all other properties, you'd be forced to explicitly specify it for all those other properties. The alternative would be to specify quantization:1, but then you can't have 0 for opacity.
2. Fully Support Blend Amounts Outside of 0 to 1
Formally support specifying blend amounts outside of the range of 0
to 1
.
Currently, this is partially supported as a side effect of the implementation, but there is no specific handling for curve functions which do not support values outside of the range of 0
to 1
. For curve functions, there are two possible options...
Linear Extension - the curve function is not applied when the blend amount is outside of the range, effectively making the blend linear in the extended range | |
Looping Curve Functions - the curve function is applied in a cyclical manner, effectively looping it to extend it beyond the 0 to 1 range |
2.1. Linear Extension
In order to make the blend curve linear outside of the 0
to 1
range that is supported by curve functions, one could simply take an approach like...
if (_blend >= 0 && _blend <= 1) { _blend = _curve (_blend); }
So, effectively, the curve function is not applied to the blend amount if the blend amount is outside of the 0
to 1
range.
2.2. Looping Curve Functions
In order to "loop" a curve function, one could take an approach like...
if (_blend < 0 || _blend > 1) { var _blendOffset = Math.floor (_blend); _blend = _blendOffset + _curve (_blend - _blendOffset); } else { _blend = _curve (_blend); }