Linear scale of a number between two ranges
The arrow-function form of the same mapping.
function scale({ value, from, to }) { return ((value - from[0]) * (to[1] - to[0])) / (from[1] - from[0]) + to[0]; }
Input & expected output
Input
{
"value": 0.5,
"from": [
0,
1
],
"to": [
0,
255
]
}Expected output
127.5The edge case
Input
{
"value": 2,
"from": [
0,
1
],
"to": [
0,
10
]
}Expected output
20Know the limits
- Values outside the input range extrapolate, as the edge case shows.
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 value, from and to ranges 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.