This module trims the edges in a planar straight line graph (pslg) based on another planar straight line graph.
This code is a modified version of Mikola Lysenko's overlay-pslg code. It is correct to the best of my knowledge, but I suspect there are simpler correct algorithms in the literature.
Here is a simple example showing how to use this module to compute the intersection of two PSLGs:
//Load the modulevar pathtrim =//Red PSLG - Define a trianglevar pathPoints =05 025025 05075 075var pathEdges = 01 12 20//Blue PSLG - Define a squarevar polyPoints =025 025025 0606 0606 025var polyEdges = 01 12 23 30//Construct intersectionconsole
The result of this module is the following JSON:
points:075 075044999999999999996 0606 044999999999999996edges: 0 1 0 2
We can visualize this result as follows:
To install this module, you can use npm. The command is as follows:
npm i pathtrim-pslg
require('pathtrim-pslg')(linePoints, lineEdges, bluePoints, blueEdges[, intersectMode])
Computes a Boolean operation between two planar straight line graphs.
linePoints, lineEdgesare the points and edges of the paths that will be cut up
bluePoints, blueEdgesare the points and edges of the polygons
intersectModespecifies if we're in intersect mode (
true) or subtract mode (
Returns An object encoding a planar straight line graph with the remaining line segments
pointsare the points of the result
edgesare the edges we have kept, indexing into the
Note The interiors of the polygon are computed using
cdt2d. It counts the parity of the path with the fewest number of boundary crossings for each point. Even parity points are in the exterior, odd parity in the interior.
(c) 2017 Joseph Gentle, Mikola Lysenko. MIT License