Skip to content

processing/p5.js map like function, including floating point numbers support

License

Notifications You must be signed in to change notification settings

manferlo81/map-number

Repository files navigation

map-number

CircleCI npm codecov jsDelivr dependencies dev dependencies packagephobia bundlephobia types Known Vulnerabilities license

⚠️ this map function has nothing to do with Array.prototype.map method.

Install

npm i map-number

CDN

jsDelivr

<script src="https://cdn.jsdelivr.net/npm/map-number@latest/dist/map.umd.js"></script>

for production

<script src="https://cdn.jsdelivr.net/npm/map-number@latest/dist/map.umd.min.js"></script>

for production you may want to replace the "latest" version for a specific one.

more options...

unpkg

<script src="https://unpkg.com/map-number@latest/dist/map.umd.js"></script>

for production

<script src="https://unpkg.com/map-number@latest/dist/map.umd.min.js"></script>

for production you may want to replace the "latest" version for a specific one.

more options...

Usage

Node.js

const { map } = require('map-number');
const result = map(Math.sin(angle), -1, 1, 100, 0);

using javascript modules...

import { map } from 'map-number';
const result = map(Math.sin(angle), -1, 1, 100, 0);

Browser

After the script tag has been added, mapNum will be available globally.

const result = mapNum.map(Math.sin(angle), -1, 1, 100, 0);

API

map

Maps a number within a given range to a different range, returning a floating point number. The result WILL NOT be limited (clamped) to the the given output range.

This is the core function and all other map function variants depend on it.

syntax

map: (
  input: number,
  inputMin: number,
  inputMax: number,
  outputMin: number,
  outputMax: number,
) => number;

floor

Maps a number within a given range to a different range, returning a number rounded down to the previous integer number. The result WILL NOT be limited (clamped) to the the given output range.

syntax

floor: (
  input: number,
  inputMin: number,
  inputMax: number,
  outputMin: number,
  outputMax: number,
) => number;

ceil

Maps a number within a given range to a different range, returning a number rounded up to the next integer number. The result WILL NOT be limited (clamped) to the the given output range.

syntax

ceil: (
  input: number,
  inputMin: number,
  inputMax: number,
  outputMin: number,
  outputMax: number,
) => number;

round

Maps a number within a given range to a different range, returning a number rounded to the closest integer number. The result WILL NOT be limited (clamped) to the the given output range.

syntax

round: (
  input: number,
  inputMin: number,
  inputMax: number,
  outputMin: number,
  outputMax: number,
) => number;

If you need to round to a specific number of decimal places, you can use the transformed method and write your own round function.

limit

alias: clamp

Maps a number within a given range to a different range, returning a floating point number. The result will be limited (clamped) to the given output range.

syntax

limit: (
  input: number,
  inputMin: number,
  inputMax: number,
  outputMin: number,
  outputMax: number,
) => number;

compile

alias: wrap, create

Creates a single argument function implementing the given map, floor, ceil, round, limit, clamp or user created function. Useful when you need to map values multiple times within the same range, see example below.

syntax

compile: <O, I>(
  map: MapFunction<O, I>,
  inputMin: number,
  inputMax: number,
  outputMin: number,
  outputMax: number,
) => Compiled<O, I>;

type Compiled<O, I> = (input: I) => O;

example

import { map, round, compile } from "map-number";

const myMap = compile(map, -1, 1, 100, 0);

myMap(-0.2);
myMap(0.33);
myMap(0.5);

// ... is equivalent to...

map(-0.2, -1, 1, 100, 0);
map(0.33, -1, 1, 100, 0);
map(0.5, -1, 1, 100, 0);

transformed

alias: transform

Creates a map function where the result of the given function is transformed to a different value. This method is used internally to create the floor, ceil and round methods.

syntax

transformed: <O, M, I>(
  map: MapFunction<I, M>,
  transform: Transformer<O, M>,
) => MapFunction<O, I>;

type Transformer<O, I> = (value: I, outputMin: number, outputMax: number) => O;

example

import { transform, map } from "map-number";

const plusOne = transform(
  map,
  (value) => value + 1,
);

plusOne(0.4, 0, 1, 0, 100); // => 41 instead of 40

License

MIT © Manuel Fernández

About

processing/p5.js map like function, including floating point numbers support

Topics

Resources

License

Stars

Watchers

Forks

Packages

No packages published

Contributors 4

  •  
  •  
  •  
  •