This is a fork from https://github.com/StrandedKitty/straight-skeleton
npm i straight-skeleton
This library supports both arrays of points (SkeletonBuilder.buildFromPolygon) and GeoJSON polygons (SkeletonBuilder.buildFromGeoJSON).
- Input polygon must have at least one ring.
- The first ring is always the outer ring, and the rest are inner rings.
- Outer rings must be counter-clockwise oriented and inner rings must be clockwise oriented.
- All rings must be weakly simple.
- Each ring must have a duplicate of the first vertex at the end.
import {SkeletonBuilder} from 'straight-skeleton';
// Contains two rings: outer and inner.
const polygon = [
[
[-1, -1],
[0, -12],
[1, -1],
[12, 0],
[1, 1],
[0, 12],
[-1, 1],
[-12, 0],
[-1, -1]
], [
[-1, 0],
[0, 1],
[1, 0],
[0, -1],
[-1, 0]
]
];
// Initialize the Wasm module by calling init() once.
SkeletonBuilder.init().then(() => {
const result = SkeletonBuilder.buildFromPolygon(polygon);
// Check if the skeleton was successfully constructed
if (result !== null) {
for (const vertex of result.vertices) {
// Do something with vertices
}
for (const polygon of result.polygons) {
// Do something with polygons
}
}
});- Clone this repository.
- Run
npm ito install dependencies. - Optionally, rebuild the Wasm module:
- Install Emscripten and make sure that it's in your PATH.
cd src/core, thensh ./install_libraries.shto download and unpack all dependencies.mkdir build && cd buildto create a build directory.emcmake cmake ..to generate the build files.emmake maketo build the Wasm module. Rerun this whenever your .cpp files change.
- Run
npm run buildto build the library ornpm run devto start a development server that watches for changes.
NOTE: comment all 3 occurrences of this in ./src/core/lib/CGAL-5.6/include/CGAL/boost/graph/iterator.h
explicit operator bool() const
{
return (! (this->base() == nullptr));
}