Negatory. Postpone Mission.
Miss any of our Open RFC calls?Watch the recordings here! »

@flatten-js/polygon-offset

1.0.5 • Public • Published

npm version Build Status Coverage Status

Offset polygon

This package implements algorithm of equidistant offset of polygon. It relies on the flatten-js library and its polygon model, which is multi polygon comprised from a number of islands and holes. See this interactive notebook for more details.

Algorithm is based on the idea of morphological offset, when each edge of the polygon is mapped to its offset, and then boolean operation performed between original contour and offset edges. When offset value is positive, offset edges are unified with original contour, when negative - they are subtracted from original contour.

Contacts

Follow me on Twitter @alex_bol_

Installation

    npm install --save @flatten-js/polygon-offset

The package @flatten-js/core is peer dependency of this package and have to be installed separately:

    npm install --save @flatten-js/core

Usage

    import {offset} from "@flatten-js/polygon-offset"
 
    let offsetPolygon = offset(polygon, offset_value)

Example:

    import {segment, point, Polygon} from "@flatten-js/core"
    import {offset} from "@flatten-js/polygon-offset"
 
    // Create polygon
    let shapes = [
            segment(point(200,100), point(200,300)),
            segment(point(200,300), point(440,300)),
            segment(point(440,300), point(300,200)),
            segment(point(300,200), point(440,150)),
            segment(point(440,150), point(500,150)),
            segment(point(500,150), point(640,200)),
            segment(point(640,200), point(500,300)),
            segment(point(500,300), point(740,300)),
            segment(point(740,300), point(740,100)),
            segment(point(740,100), point(200,100))
        ];
    
    let polygon = new Polygon();
    polygon.addFace(shapes);
    
    // Apply polygon offset
    let offsetPolygon = polygon.offset(20);

See Offset Polygon interactive notebook to explore this algorithm.

Install

npm i @flatten-js/polygon-offset

DownloadsWeekly Downloads

3

Version

1.0.5

License

MIT

Unpacked Size

1.6 MB

Total Files

63

Last publish

Collaborators

  • avatar