position.ts v0.3.0
position :round_pushpin:
A blazing-fast JavaScript library for handling locations on and off maps.
position is a library for quick, elegant manipulation of positional data on a 2D
plane. Prominent features include:
- High-precision geometric calculations
- Rapid path determinations
- Powerful async operations
- First-class TypeScript support
- C++ bindings
- Time-minimum center (coming soon)
positionwas previously branded asmeetHere, which had first-class support for the Google Maps API. Due to decreased usage quotas of the Google Maps API, this functionality has been removed.
Installation
$ yarn add position.ts$ npm i position.ts --saveUsage
You can find the full API here.
Position - a blazing-fast, 2D-locations manipulation prototype.
For general-purpose use, like in physics libraries or games.
import { Position } from 'position.ts';
let Plane = new Position([[0, 1], [1.5, 3], [-9, 1.07]]);
Plane.add([3, 4]);
Plane.center // => [ 1.4990254494359172, 2.999397294475018 ]
Plane.median // => [ -1.125, 2.2675 ]
Plane.score // => 0.11155562920022742Extensions
Extending any class in position for your specific use case is trivial:
import { Position } from 'position.ts';
class Plane3D extends Position {
constructor(args) {
super(...args);
}
get flightPath() {
return this.dimensionalize(
super.vrp(this.locations.map(v => [v[0], v[1]])),
super.vrp(this.locations.map(v => [v[0], v[2]])),
super.vrp(this.locations.map(v => [v[1], v[2]]))
);
}
}Develop
git clone git@github.com:ayazhafiz/position.git && cd position
yarn # or, npm install
# develop some features
# compile
node-gyp configure
node-gyp build
yarn build # or, npm run build
yarn test # or, npm testSupport
position actively supports Node versions 4 and higher. More specifically:
- 4.x.x (LTS/argon)
- 5.x.x
- 6.x.x (LTS/boron)
- 7.x.x
- 8.x.x
- 9.x.x (nightly)
- Note that failures in nightly versions are most likely a problem with Node, not with this package.
position may work with Node 0.x.x or io.js (1 - 3.x.x), but since these strains
are not supported by Node anymore, this library does not target build
compatibility with them. The sensitivity of this library's native bindings and
ES targeting may make it completely inoperable with anything below LTS/argon.
License
MIT, © hafiz 2017
7 years ago