Hey everyone. I was just added as a maintainer of JSCAD
I've recently been getting a bunch of commits in (with the help of @z3dev, @hrgdavor, and others) trying to make the geometry internals of JSCAD both rock solid, and super fast.
Some recent improvements:
- 100x speedup of
toOutlines
for large polys - 150x speedup of
hullPath2
for large polys - 2.6x speedup of
expandShell
for 3D expansions. Also produces cleaner output geometry. - 300x speedup of
offsetFromPoints
for 2D expansions. Also cleaner output geometry.
Some bigger projects I'm working on:
- Earcut triangulation. Currently extrusions use
toPolygons
to turn non-convex geometries into convex polygons. But there are known bugs (#907). I believe this can be done faster, and produce air-tight geometry! - Fixes to offsetFromPoints. A user reported a bug in our offset code (#1017). Polygon offsetting is a hard problem in computational geometry. I think we can fix the user bug, but getting a fully general solution may not be easy.
- Eliminate non-manifold geometry from the output of BSP trees. Still early in experiments, but I think it's possible to efficiently produce manifold geometry. This would be more robust to floating point errors (quantization would not break edges). And allow non-linear transforms (for example, bending an object #598).
I really like the JSCAD API. V2 was a beautiful upgrade. I want to make the engine implementing that API as fast and accurate as humanly possible.