interpolation/Rescale/FloatFixed

From Second Life Wiki
Jump to navigation Jump to search
The printable version is no longer supported and may have rendering errors. Please update your browser bookmarks and please use the default browser print function instead.

Summary

Function: float fSclFix( float from_min, float from_max, float to_min, float to_max, float from );

Rescales a value from one range to another range.

The value is also clamped between the range.
Returns a float

• float from_min Minimum of range From
• float from_max Maximum of range From
• float to_min Minimum of range To
• float to_max Maximum of range To
• float from Value in range From

Specification

float fSclFix(float from_min, float from_max, float to_min, float to_max, float from) {
    from = to_min + ((to_max-to_min) * ((from_min-from) / (from_min-from_max)));
    if(to_min < to_max) {
        if(from < to_min) from = to_min; else if(from > to_max) from = to_max;
    } else {
        if(from < to_max) from = to_max; else if(from > to_min) from = to_min;
    }
    return from;
}
// Released into public domain. By Nexii Malthus.

Examples

float value = fSclFix(0.0, 1.0, -5, 15, 0.6); // value == 7