interpolation/Rescale/FloatFixed

From Second Life Wiki
< Interpolation‎ | Rescale
Revision as of 04:23, 14 September 2011 by Nexii Malthus (talk | contribs) (Created page with "{{LSL_Function |mode=user |func=fSclFix |p1_type=float|p1_name=from_a |p2_type=float|p2_name=from_b |p3_type=float|p3_name=to_a |p4_type=float|p4_name=to_b |p5_type=float|p5_name…")
(diff) ← Older revision | Latest revision (diff) | Newer revision → (diff)
Jump to navigation Jump to search

Summary

Function: float fSclFix( float from_a, float from_b, float to_a, float to_b, float from );

Rescales a value from one range to another range.

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

• float from_a
• float from_b
• float to_a
• float to_b
• float from

Specification

<lsl>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.</lsl>

Examples

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