Notable Pottery Manufacturer

    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

    Keywords

    none

    Install

    npm i geopro-js

    DownloadsWeekly Downloads

    4

    Version

    0.0.5

    License

    MIT

    Unpacked Size

    104 kB

    Total Files

    28

    Last publish

    Collaborators

    • micurs