What is lib2geom?
lib2geom (2Geom in private life) was initially a library developed for Inkscape, but it can provide a robust computational geometry framework for any application. It is not a rendering library, instead concentrating on high level algorithms such as computing arc length.
- Small, algebraic objects (Point/Matrix) will be mutable, whereas large objects like a pathset will be immutable. <justification here>
- We are using an original development method we've dubbed "Toy Driven Development". Under this process graphical toys are implemented which allow playing with the features of the library.
Quick Feature List
- Functional programming style.
- Efficient affine transformations
- Convex Hulls
- Bounded error
- General purpose paths:
- Exact elliptical arcs
- Centroid and bending moments
- Path Locations:
- Determination of special spots (e.g. maximum curvature)
- Point, tangent, curvature at location
- Efficient arc length and inverse arc length
- Path algebra:
- Computations such as offset curves can be written with their mathematical definition and still get a bounded error, efficient curve. (preliminary trials indicate offset done this way out performs the method used in Inkscape)
- Arbitrary distortion (with bounded error):
- Mesh distorts
- Computational distorts such as the GIMP's 'vortex' plugin
- 3d mapping (perspective, flag, sphere)
- Exact boolean ops (elliptic arcs remain elliptic arcs)
- Efficient 2d database
- Implicit function plotting
- NURBs input and output
- Tunable path simplification
- PDoF constraint system for CAD/CAGD
WorkingWith2GeomFAQ: real-life questions answered about using
2Geom in real code
lib2geom py2geom: Python bindings to
2geom. With this you can use the power of
2geom in Python scripts.
https://sourceforge.net/p/lib2geom/wiki: 2geom wiki site on SourceForge (obsolescent)
https://gitlab.com/inkscape/lib2geom/: Official source code for the project