Ecosyste.ms: Awesome
An open API service indexing awesome lists of open source software.
https://github.com/adrian-samoticha/num_remap
An implementation for the “Arduino map” function in Dart, which allows numbers to be remapped from one range to another.
https://github.com/adrian-samoticha/num_remap
arduino dart double integer map number remap
Last synced: 6 days ago
JSON representation
An implementation for the “Arduino map” function in Dart, which allows numbers to be remapped from one range to another.
- Host: GitHub
- URL: https://github.com/adrian-samoticha/num_remap
- Owner: Adrian-Samoticha
- License: bsd-3-clause
- Created: 2022-07-23T17:37:48.000Z (over 2 years ago)
- Default Branch: master
- Last Pushed: 2023-10-20T09:22:01.000Z (about 1 year ago)
- Last Synced: 2024-10-19T19:40:29.020Z (2 months ago)
- Topics: arduino, dart, double, integer, map, number, remap
- Language: Dart
- Homepage: https://pub.dev/packages/num_remap
- Size: 14.6 KB
- Stars: 4
- Watchers: 1
- Forks: 0
- Open Issues: 0
-
Metadata Files:
- Readme: README.md
- Changelog: CHANGELOG.md
- License: LICENSE
Awesome Lists containing this project
README
An implementation for the [“Arduino map”](https://www.arduino.cc/reference/en/language/functions/math/map/) function in Dart, which allows numbers to be remapped from one range to another.
## Features
**`remap` method:**
Remaps a number from one range to another. That is, a value of `fromLow` would
get mapped to `toLow`, a value of `fromHigh` to `toHigh`, and values in-between to values
in-between.It does not constrain the values to the provided range, because out-of-range values are
sometimes intended and useful. Use the `remapAndClamp` method if you wish for
the values to be constrained.Note that the “lower bounds” of either range may be larger or smaller than the
“upper bounds” so the `remap()` method may be used to reverse a range of numbers,
for example:
```dart
final reversedX = x.remap(1, 50, 50, 1);
```The method also handles negative numbers well, so that this example
```dart
final y = x.remap(1, 50, 50, -100);
```
is also valid.
**`remapAndClamp` method:**
Same as `remap`, however, the result is being constrained to the range
`toLow`-`toHigh`.For instance, the following code returns `1`:
```dart
150.remapAndClamp(0, 100, 0, 1)
```Note that `toLow` may be greater than `toHigh`, so the following code
```dart
final y = x.remapAndClamp(0, 100, 100, 0);
```
works.
**Integer-only methods:**
Both the `remap` and the `remapAndClamp` offer integer-only versions of themselves (named `remapInt` and `remapAndClampInt` respectively). These work the same as their `num` counterparts, however, their returned value is guaranteed to be an integer.
**`isWithinRange` method:**
Returns whether a number is within a given range.
## Getting started
1. Add the package as a dependency to your `pubspec.yaml`.
2. Import the library:```dart
import 'package:num_remap/num_remap.dart';
```
## Usage
The library acts as an extension to the `num` and `int` types. You can use its methods as follows:
```dart
import 'package:num_remap/num_remap.dart';...
final someDouble = 0.5;
final remappedDouble = someDouble.remap(0.0, 1.0, -100.0, 100.0);
```