Catalog npm
Back to packageRELEASE DETAILS

1.1.2

npm

2d-polygon-self-intersections

This library may not be fast, but it is robust. Robust in the fact that it will find all of the self-intersections in a polygon - minus of course shared endpoints.

2dintersectionsmathpolygonrobustself-intersections
Published19 May 2015
Direct dependencies4
Transitive dependenciesNot calculated

README

Current package documentation

2d-polygon-self-intersections

find self-intersections in a 2d polygon

This library may not be fast, but it is robust. Robust in the fact that it will find all of the self-intersections in a polygon - minus of course shared endpoints.

You can expect a time complexity of O(n^2)

Why wouldn't we use Bentley–Ottmann? We may in the future, but that is going to take some time and having a functional mechanism for detecting self-intersections is far superior to a non-existant one. The api won't have to change for this to happen.

install

npm install 2d-polygon-self-intersections

use

var isects = require('2d-polygon-self-intersections');

var poly = [
  [0, 0],
  [10, 0],
  [0, 10],
  [10, 10]
];

var r = isects(poly);
console.log(r);
// outputs: [ [ 5, 5 ] ]

api

isects(polygon[, filterFn])

  • polygon - an array of 2 component arrays (i.e. a triangle [[0, 0], [10, 0], [10, 10]]) or an array of objects: [{x:0, y:0}, {x:10, y:0}, {x:10, y:10}]
  • filterFn - a filter function called whenever an intersection is found: filterFn(isect, start0, end0, start1, end1, unique)
  • isect - current intersection (e.g. [5, 5]) - mutations in this array get collected
  • index0 - index of the segment (e.g 1)
  • start0 - start of the first segment (e.g [0, 5])
  • end0 - start of the first segment (e.g [10, 5])
  • index0 - index of the segment (e.g 3)
  • start1 - start of the first segment (e.g [5, 0])
  • end1 - start of the first segment (e.g [5, 10])
  • unique - boolean representing whether or not this intersection point has been seen before
  • return true to collect and false to discard

returns an empty array if no interesections or an array of 2 component arrays representing the intersection points.

NOTE: this library assumes the polygon is closed, so manually adding the start point as the end point has no effect.

Also note that there are 2 intersections per crossing, this library by default will only report one - all intersections will be unique. This behavior can be changed with the filterFn.

license

MIT

Downloads & popularity

Awaiting observations

No metric observations yet

Download counts and popularity will appear here as the collector receives them.

Declared dependencies 4

Native requirements
4 direct targetsNot calculated transitive count
Package / targetRequirementRelationship
exact-segment-intersect
Environment
{
  "local_name": "exact-segment-intersect",
  "alias": false,
  "peer_metadata": null
}
^1.0.0runtime
robust-estimate-float
Environment
{
  "local_name": "robust-estimate-float",
  "alias": false,
  "peer_metadata": null
}
^1.0.0runtime
benchmark
Environment
{
  "local_name": "benchmark",
  "alias": false,
  "peer_metadata": null
}
^1.0.0development
tape
Environment
{
  "local_name": "tape",
  "alias": false,
  "peer_metadata": null
}
^4.0.0development

Distribution files

1 collected
Distribution 1

Source distribution

Source file
Checksums from source
{
  "shasum": "9ffec8433e2b816be22cd327e40315f6334b6026",
  "tarball": "https://registry.npmjs.org/2d-polygon-self-intersections/-/2d-polygon-self-intersections-1.1.2.tgz",
  "integrity": "sha512-Be4nl7Ahff6tjZEl3vzYT0OlvUvaa0lyANnuuI+k5gk8K/oTR302V1wQ133ztPkzvej+Ddiiek7/2WdKzPZrwA==",
  "signatures": [
    {
      "keyid": "SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA",
      "sig": "MEUCIQDVBvgzW+htIwO+VuBcJfHB/RK5Bwt76FiljdRls4lFdAIgFcilcIKS7zuXS2CWebGd8NUiYL/OVzvD1SZe0HWQkF4="
    }
  ]
}

Repository

PENDING
tmpvar/2d-polygon-self-intersections

Shared repository data · GitHub

License detected in repository
Not collected

Metadata history

Meaningful changes
Current collected state Current

Observed since 20 Oct, 19:10 UTC

No superseded metadata states collected. Unchanged observations do not create new revisions.

Record identity

package_version:7bc36c74eaeeacb10aaa9bfe0f42f7fffc182e03b68d7b774727f8fcc8d41a1c

Other collected versions

1.3.128 May1.2.224 May1.2.123 May1.2.023 May1.1.119 May1.1.019 MayView all collected versions →