geopro-js
TypeScript icon, indicating that this package has built-in type declarations

0.0.5 • Public • Published

GeoPro

This is a simple library allowing intuitive and fast basic Geometric programming.

Use

GeoPro-Js use functional style programming for manipulating points in 3D. It provides basic 3D primitives like points, vectors and unit-vectors and operations for combining them.

Example 1: Adding vectors to a point

const p0 = new Point(1, 1, 1);
const v0 = new Vector(1, 2, 3);
const v1 = new Vector(3, 2, 1);
const uv = UnitVector.fromVector(new Vector(1, 1, 1));

const p1 = Point.add(v0, p0); // Compute p1 = p + v
const p2 = Point.add(v1, p1); // Compute p2 = p1 + v
const v = Vector.fromPoints(p2, p0); // Compute v1 = p2 - p
const pt = Point.add(v.multiplyBy(0.5), p0); // Compute p(t) = p + t * v

Example 2: Adding multiple vectors

const v1 = new Vector(10, 10, 10);
const v2 = new Vector(-10, 0, 0);
const v3 = new Vector(0, -10, 0);
const v4 = new Vector(0, 0, -10);
const vres = Vector.adds(v1, v2, v3, v4);

Example: Compute a point along a line

const start = new Point(1, 1, 1);
const dir = UnitVector.fromVector(new Vector(0, 0, 1));
const t = 10;
const p = Point.along(t, dir, start);

Example: Create a translation and apply to a point using map()

const translation = Transform.fromTranslation(10.0, 2.0, 3.0);
const p1 = new Point(0.0, 0.0, 0.0);
const p2 = p1.map(translation);

or by using the curried map() function we can create a translate function:

const translate = map(Transform.fromTranslation(10.0, 2.0, 3.0));
const p1 = new Point(0.0, 0.0, 0.0);
const p2 = translate(p1) as Point;

Example: Create a composition of multiple transformations

By using the compose() function we can compute a complex transformation by assemblying multiple basic transformation into one. Using map() we can then create a function that can apply the transformation to points:

const ang = Math.PI / 4;
const rotX = Transform.fromRotationX(ang);
const rotY = Transform.fromRotationY(-ang);
const rotZ = Transform.fromRotationZ(ang);
const trn = Transform.fromTranslation(12, 15, 120);
const scl = Transform.fromScale(12, 5, 20);
const trans = map(compose(rotZ, rotY, rotX, scl, trn));
const p0 = new Point(10, 20, 11);
const p1 = trans(p0) as Point;

Example: Create a frame of reference

A reference frame (Frame) represents a orthogonal coordinate system in 3D:

Development

Dependents (0)

Package Sidebar

Install

npm i geopro-js

Weekly Downloads

3

Version

0.0.5

License

MIT

Unpacked Size

104 kB

Total Files

28

Last publish

Collaborators

  • micurs