Linear scale a number between ranges
Map a value from one range onto another.
function linearScale({ value, inMin, inMax, outMin, outMax }) { return ((value - inMin) * (outMax - outMin)) / (inMax - inMin) + outMin; }
Input & expected output
Input
{
"value": 5,
"inMin": 0,
"inMax": 10,
"outMin": 0,
"outMax": 100
}Expected output
50The edge case
Input
{
"value": 0,
"inMin": -1,
"inMax": 1,
"outMin": 100,
"outMax": 0
}Expected output
50Know the limits
- Output ranges may be reversed, as the edge case shows. The lab requires inMin ≠ inMax.
The function above is the implementation used by the lab. The lab validates JSON types and caps size before execution; include equivalent validation when accepting untrusted input in your application.
Source & maintenance
Based on Linear Scale of a Number between two ranges from the original 1loc collection by Nguyen Huu Phuoc, with iamandrewluca. Copyright (c) 2020 phuoc-ng. MIT licensed.
Takes named fields as one object. Original MDX retained as inert source evidence.
Maintained by Oveyon. Source commit: 14b481cf60df. Read the license.
Keep exploring
- Convert degrees to radians — Multiply by π and divide by 180.
- Check if a rectangle contains another one — Compare corners: a contains b when b’s corners sit inside or on a’s edges.
- Check if a rectangle overlaps another one — Two rectangles overlap when they overlap on both axes.