Package Exports
- @thi.ng/geom
This package does not declare an exports field, so the exports above have been automatically detected and optimized by JSPM instead. If any package subpath is missing, it is recommended to post an issue to the original package (@thi.ng/geom) to support the "exports" field. If that is not possible, create a JSPM override to customize the exports field for this package.
Readme
This project is part of the @thi.ng/umbrella monorepo.
For the Clojure version, please visit: thi.ng/geom-clj
About
Functional, polymorphic API for 2D geometry types & SVG generation.
This project is a partially ported from the Clojure version of the same name. All polymorphic operations built on @thi.ng/defmulti.
Up-to-date feature matrix spreadsheet
This package acts as a higher-level frontend for most of the following related packages (which are more low-level, lightweight and usable by themselves too):
Support packages
- @thi.ng/geom-accel - n-D spatial indexing data structures with a shared ES6 Map/Set-like API
- @thi.ng/geom-api - Shared type & interface declarations for @thi.ng/geom packages
- @thi.ng/geom-arc - 2D circular / elliptic arc operations
- @thi.ng/geom-clip-line - 2D line clipping (Liang-Barsky)
- @thi.ng/geom-clip-poly - 2D convex polygon clipping (Sutherland-Hodgeman)
- @thi.ng/geom-closest-point - 2D / 3D closest point / proximity helpers
- @thi.ng/geom-fuzz - Highly configurable, fuzzy line & polygon creation with presets and composable fill & stroke styles. Canvas & SVG support
- @thi.ng/geom-hull - Fast 2D convex hull (Graham Scan)
- @thi.ng/geom-io-obj - Wavefront OBJ parser (& exporter soon)
- @thi.ng/geom-isec - 2D/3D shape intersection checks
- @thi.ng/geom-isoline - Fast 2D contour line extraction / generation
- @thi.ng/geom-poly-utils - 2D polygon/polyline analysis & processing utilities
- @thi.ng/geom-resample - Customizable nD polyline interpolation, re-sampling, splitting & nearest point computation
- @thi.ng/geom-splines - nD cubic & quadratic curve analysis, conversion, interpolation, splitting
- @thi.ng/geom-subdiv-curve - Freely customizable, iterative nD subdivision curves for open / closed geometries
- @thi.ng/geom-tessellate - 2D/3D convex polygon tessellators
- @thi.ng/geom-voronoi - Fast, incremental 2D Delaunay & Voronoi mesh implementation
Status
BETA - possibly breaking changes forthcoming
Search or submit any issues for this package
Installation
yarn add @thi.ng/geom
// ES module
<script type="module" src="https://unpkg.com/@thi.ng/geom?module" crossorigin></script>
// UMD
<script src="https://unpkg.com/@thi.ng/geom/lib/index.umd.js" crossorigin></script>
Package sizes (gzipped, pre-treeshake): ESM: 10.27 KB / CJS: 10.50 KB / UMD: 9.93 KB
Dependencies
- @thi.ng/api
- @thi.ng/arrays
- @thi.ng/checks
- @thi.ng/defmulti
- @thi.ng/equiv
- @thi.ng/errors
- @thi.ng/geom-api
- @thi.ng/geom-arc
- @thi.ng/geom-clip-line
- @thi.ng/geom-clip-poly
- @thi.ng/geom-closest-point
- @thi.ng/geom-hull
- @thi.ng/geom-isec
- @thi.ng/geom-poly-utils
- @thi.ng/geom-resample
- @thi.ng/geom-splines
- @thi.ng/geom-subdiv-curve
- @thi.ng/geom-tessellate
- @thi.ng/hiccup
- @thi.ng/hiccup-svg
- @thi.ng/math
- @thi.ng/matrices
- @thi.ng/random
- @thi.ng/strings
- @thi.ng/transducers
- @thi.ng/vectors
Usage examples
Several demos in this repo's /examples directory are using this package.
A selection:
Screenshot | Description | Live demo | Source |
---|---|---|---|
![]() |
Convex hull & shape clipping of 2D polygons | Demo | Source |
![]() |
geom-fuzz basic shape & fill examples | Demo | Source |
![]() |
Animated, recursive polygon tessellations | Demo | Source |
![]() |
Poisson-disk shape-aware sampling, Voronoi & Minimum Spanning Tree visualization | Demo | Source |
![]() |
Mouse gesture / stroke analysis, simplification, corner detection | Demo | Source |
![]() |
2D Bezier curve-guided particle system | Demo | Source |
![]() |
Animated arcs & drawing using hiccup-canvas | Demo | Source |
![]() |
Canvas based Immediate Mode GUI components | Demo | Source |
![]() |
Animated sine plasma effect visualized using contour lines | Demo | Source |
![]() |
Polygon to cubic curve conversion & visualization | Demo | Source |
![]() |
Animated Voronoi diagram, cubic splines & SVG download | Demo | Source |
![]() |
2D scenegraph & shape picking | Demo | Source |
![]() |
2D scenegraph & image map based geometry manipulation | Demo | Source |
![]() |
3D wireframe textmode demo | Demo | Source |
API
TODO
Authors
Karsten Schmidt
If this project contributes to an academic publication, please cite it as:
@misc{thing-geom,
title = "@thi.ng/geom",
author = "Karsten Schmidt",
note = "https://thi.ng/geom",
year = 2013
}
License
© 2013 - 2021 Karsten Schmidt // Apache Software License 2.0