segseg

WebJar for segseg

License

License

MIT
GroupId

GroupId

org.webjars.npm
ArtifactId

ArtifactId

segseg
Last Version

Last Version

0.2.2
Release Date

Release Date

Type

Type

jar
Description

Description

segseg
WebJar for segseg
Project URL

Project URL

https://www.webjars.org
Source Code Management

Source Code Management

https://github.com/tmpvar/segseg

Download segseg

How to add to project

<!-- https://jarcasting.com/artifacts/org.webjars.npm/segseg/ -->
<dependency>
    <groupId>org.webjars.npm</groupId>
    <artifactId>segseg</artifactId>
    <version>0.2.2</version>
</dependency>
// https://jarcasting.com/artifacts/org.webjars.npm/segseg/
implementation 'org.webjars.npm:segseg:0.2.2'
// https://jarcasting.com/artifacts/org.webjars.npm/segseg/
implementation ("org.webjars.npm:segseg:0.2.2")
'org.webjars.npm:segseg:jar:0.2.2'
<dependency org="org.webjars.npm" name="segseg" rev="0.2.2">
  <artifact name="segseg" type="jar" />
</dependency>
@Grapes(
@Grab(group='org.webjars.npm', module='segseg', version='0.2.2')
)
libraryDependencies += "org.webjars.npm" % "segseg" % "0.2.2"
[org.webjars.npm/segseg "0.2.2"]

Dependencies

There are no dependencies for this project. It is a standalone project that does not depend on any other jars.

Project Modules

There are no modules declared in this project.

segseg

Build Status

Intersection detection between two line segments in 2d space.

Usage

import segseg from 'segseg'


/*
                (0, 5)
                   |
  (-10, 0) --------+-------  (10, 0)
                   |
                (0, -5)
*/

const isect = [ NaN, NaN ] // the output vector where collision point is stored

//                       seg 1                   seg 2
//                ┌-------------------┐   ┌-----------------┐
if (segseg(isect, [ -10, 0 ], [ 10, 0 ],  [ 0, 5 ], [ 0, -5 ]))
    console.log('intersected!', isect.join(','))  // output:   intersected! 0,0

Node compatibility

This is a pure es module, and requires node v12+ to run. However if you're using a popular bundler such as rollup, webpack, etc. This should be compatible with most frontend setups too.

Credits

This code was ported from Mukesh Prasad's example implementation which was included in graphics gems 2.

Internally the code uses a point-segment check for some edge cases, from https://gist.github.com/mattdesl/47412d930dcd8cd765c871a65532ffac

Versions

Version
0.2.2