@thi.ng/geom 8.3.23 → 8.3.25

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/README.md CHANGED
@@ -1,6 +1,6 @@
1
1
  <!-- This file is generated - DO NOT EDIT! -->
2
- <!-- Please see: https://github.com/thi-ng/umbrella/blob/develop/CONTRIBUTING.md#changes-to-readme-files -->
3
- # ![@thi.ng/geom](https://raw.githubusercontent.com/thi-ng/umbrella/develop/assets/banners/thing-geom.svg?0f8f2ae6)
2
+ <!-- Please see: https://codeberg.org/thi.ng/umbrella/src/branch/develop/CONTRIBUTING.md#changes-to-readme-files -->
3
+ # ![@thi.ng/geom](https://codeberg.org/thi.ng/umbrella/media/branch/develop/assets/banners/thing-geom.svg?0f8f2ae6)
4
4
 
5
5
  [![npm version](https://img.shields.io/npm/v/@thi.ng/geom.svg)](https://www.npmjs.com/package/@thi.ng/geom)
6
6
  ![npm downloads](https://img.shields.io/npm/dm/@thi.ng/geom.svg)
@@ -8,11 +8,12 @@
8
8
 
9
9
  > [!NOTE]
10
10
  > This is one of 214 standalone projects, maintained as part
11
- > of the [@thi.ng/umbrella](https://github.com/thi-ng/umbrella/) monorepo
11
+ > of the [@thi.ng/umbrella](https://codeberg.org/thi.ng/umbrella/) ecosystem
12
12
  > and anti-framework.
13
13
  >
14
- > 🚀 Please help me to work full-time on these projects by [sponsoring me on
15
- > GitHub](https://github.com/sponsors/postspectacular). Thank you! ❤️
14
+ > 🚀 Please help me to work full-time on these projects by [sponsoring
15
+ > me](https://codeberg.org/thi.ng/umbrella/src/branch/develop/CONTRIBUTING.md#donations).
16
+ > Thank you! ❤️
16
17
 
17
18
  For the Clojure version, please visit: [thi.ng/geom-clj](https://thi.ng/geom-clj)
18
19
 
@@ -57,7 +58,7 @@ Functional, polymorphic API for 2D geometry types & SVG generation.
57
58
 
58
59
  This project is a partially ported from the [Clojure version of the same
59
60
  name](http://thi.ng/geom-clj). All polymorphic operations built on
60
- [@thi.ng/defmulti](https://github.com/thi-ng/umbrella/tree/develop/packages/defmulti).
61
+ [@thi.ng/defmulti](https://codeberg.org/thi.ng/umbrella/src/branch/develop/packages/defmulti).
61
62
 
62
63
  ### Shape types
63
64
 
@@ -76,39 +77,39 @@ linked sources and/or docs.
76
77
 
77
78
  | Shape/Form | Description | Hiccup support |
78
79
  |--------------------------------------------------------------------------------------------------------|---------------------------------------|---------------------|
79
- | [AABB](https://github.com/thi-ng/umbrella/blob/develop/packages/geom/src/aabb.ts) | 3D Axis-aligned bounding box | ✅<sup>(1)</sup> |
80
- | [Arc](https://github.com/thi-ng/umbrella/blob/develop/packages/geom/src/arc.ts) | 2D elliptic arc | ✅ |
81
- | [BPatch](https://github.com/thi-ng/umbrella/blob/develop/packages/geom/src/bpatch.ts) | 2D cubic bezier patch (4x4 points) | ✅ |
82
- | [Circle](https://github.com/thi-ng/umbrella/blob/develop/packages/geom/src/circle.ts) | 2D circle | ✅ |
83
- | [ComplexPolygon](https://github.com/thi-ng/umbrella/blob/develop/packages/geom/src/complex-polygon.ts) | 2D polygon w/ holes | ✅ |
84
- | [Cubic](https://github.com/thi-ng/umbrella/blob/develop/packages/geom/src/cubic.ts) | 2D cubic bezier | ✅ |
85
- | [Cubic3](https://github.com/thi-ng/umbrella/blob/develop/packages/geom/src/cubic3.ts) | 3D cubic bezier | ✅<sup>(1)</sup> |
86
- | [Ellipse](https://github.com/thi-ng/umbrella/blob/develop/packages/geom/src/ellipse.ts) | 2D ellipse | ✅ |
87
- | [Extra](https://github.com/thi-ng/umbrella/blob/develop/packages/geom/src/extra.ts) | Custom embedded hiccup/SVG data | ✅ |
88
- | [Group](https://github.com/thi-ng/umbrella/blob/develop/packages/geom/src/group.ts) | group of 2D shapes | ✅ |
89
- | [Group3](https://github.com/thi-ng/umbrella/blob/develop/packages/geom/src/group3.ts) | group of 3D shapes | ✅<sup>(1)</sup> |
90
- | [Line](https://github.com/thi-ng/umbrella/blob/develop/packages/geom/src/line.ts) | 2D line segment | ✅ |
91
- | [Line3](https://github.com/thi-ng/umbrella/blob/develop/packages/geom/src/line3.ts) | 3D line segment | ✅<sup>(1)</sup> |
92
- | [Path](https://github.com/thi-ng/umbrella/blob/develop/packages/geom/src/path.ts) | 2D path (w/ optional holes/sub-paths) | ✅ |
93
- | [Path3](https://github.com/thi-ng/umbrella/blob/develop/packages/geom/src/path3.ts) | 3D path (w/ optional holes/sub-paths) | ✅<sup>(1),(2)</sup> |
94
- | [Plane](https://github.com/thi-ng/umbrella/blob/develop/packages/geom/src/plane.ts) | 3D plane | ✅<sup>(1)</sup> |
95
- | [Points](https://github.com/thi-ng/umbrella/blob/develop/packages/geom/src/points.ts) | 2D point cloud | ✅ |
96
- | [Points3](https://github.com/thi-ng/umbrella/blob/develop/packages/geom/src/points3.ts) | 3D point cloud | ✅<sup>(1)</sup> |
97
- | [Polygon](https://github.com/thi-ng/umbrella/blob/develop/packages/geom/src/polygon.ts) | 2D simple polygon (no holes) | ✅ |
98
- | [Polygon3](https://github.com/thi-ng/umbrella/blob/develop/packages/geom/src/polygon3.ts) | 3D simple polygon (no holes) | ✅ |
99
- | [Polyline](https://github.com/thi-ng/umbrella/blob/develop/packages/geom/src/polyline.ts) | 2D polyline | ✅ |
100
- | [Polyline3](https://github.com/thi-ng/umbrella/blob/develop/packages/geom/src/polyline3.ts) | 3D polyline | ✅<sup>(1)</sup> |
101
- | [Quad](https://github.com/thi-ng/umbrella/blob/develop/packages/geom/src/quad.ts) | 2D quad (4-gon) | ✅ |
102
- | [Quad3](https://github.com/thi-ng/umbrella/blob/develop/packages/geom/src/quad3.ts) | 2D quad (4-gon) | ✅<sup>(1)</sup> |
103
- | [Quadratic](https://github.com/thi-ng/umbrella/blob/develop/packages/geom/src/quadratic.ts) | 2D quadratic bezier | ✅ |
104
- | [Quadratic3](https://github.com/thi-ng/umbrella/blob/develop/packages/geom/src/quadratic3.ts) | 3D quadratic bezier | ✅<sup>(1)</sup> |
105
- | [Ray](https://github.com/thi-ng/umbrella/blob/develop/packages/geom/src/ray.ts) | 2D ray | ✅ |
106
- | [Ray3](https://github.com/thi-ng/umbrella/blob/develop/packages/geom/src/ray3.ts) | 3D ray | ✅<sup>(1)</sup> |
107
- | [Rectangle](https://github.com/thi-ng/umbrella/blob/develop/packages/geom/src/rect.ts) | 2D rectangle | ✅ |
108
- | [Sphere](https://github.com/thi-ng/umbrella/blob/develop/packages/geom/src/sphere.ts) | 3D sphere | ✅<sup>(1)</sup> |
109
- | [Text](https://github.com/thi-ng/umbrella/blob/develop/packages/geom/src/text.ts) | Basic stub for text labels | ✅<sup>(3)</sup> |
110
- | [Triangle](https://github.com/thi-ng/umbrella/blob/develop/packages/geom/src/triangle.ts) | 2D triangle | ✅ |
111
- | [Triangle3](https://github.com/thi-ng/umbrella/blob/develop/packages/geom/src/triangle3.ts) | 3D triangle | ✅<sup>(1)</sup> |
80
+ | [AABB](https://codeberg.org/thi.ng/umbrella/src/branch/develop/packages/geom/src/aabb.ts) | 3D Axis-aligned bounding box | ✅<sup>(1)</sup> |
81
+ | [Arc](https://codeberg.org/thi.ng/umbrella/src/branch/develop/packages/geom/src/arc.ts) | 2D elliptic arc | ✅ |
82
+ | [BPatch](https://codeberg.org/thi.ng/umbrella/src/branch/develop/packages/geom/src/bpatch.ts) | 2D cubic bezier patch (4x4 points) | ✅ |
83
+ | [Circle](https://codeberg.org/thi.ng/umbrella/src/branch/develop/packages/geom/src/circle.ts) | 2D circle | ✅ |
84
+ | [ComplexPolygon](https://codeberg.org/thi.ng/umbrella/src/branch/develop/packages/geom/src/complex-polygon.ts) | 2D polygon w/ holes | ✅ |
85
+ | [Cubic](https://codeberg.org/thi.ng/umbrella/src/branch/develop/packages/geom/src/cubic.ts) | 2D cubic bezier | ✅ |
86
+ | [Cubic3](https://codeberg.org/thi.ng/umbrella/src/branch/develop/packages/geom/src/cubic3.ts) | 3D cubic bezier | ✅<sup>(1)</sup> |
87
+ | [Ellipse](https://codeberg.org/thi.ng/umbrella/src/branch/develop/packages/geom/src/ellipse.ts) | 2D ellipse | ✅ |
88
+ | [Extra](https://codeberg.org/thi.ng/umbrella/src/branch/develop/packages/geom/src/extra.ts) | Custom embedded hiccup/SVG data | ✅ |
89
+ | [Group](https://codeberg.org/thi.ng/umbrella/src/branch/develop/packages/geom/src/group.ts) | group of 2D shapes | ✅ |
90
+ | [Group3](https://codeberg.org/thi.ng/umbrella/src/branch/develop/packages/geom/src/group3.ts) | group of 3D shapes | ✅<sup>(1)</sup> |
91
+ | [Line](https://codeberg.org/thi.ng/umbrella/src/branch/develop/packages/geom/src/line.ts) | 2D line segment | ✅ |
92
+ | [Line3](https://codeberg.org/thi.ng/umbrella/src/branch/develop/packages/geom/src/line3.ts) | 3D line segment | ✅<sup>(1)</sup> |
93
+ | [Path](https://codeberg.org/thi.ng/umbrella/src/branch/develop/packages/geom/src/path.ts) | 2D path (w/ optional holes/sub-paths) | ✅ |
94
+ | [Path3](https://codeberg.org/thi.ng/umbrella/src/branch/develop/packages/geom/src/path3.ts) | 3D path (w/ optional holes/sub-paths) | ✅<sup>(1),(2)</sup> |
95
+ | [Plane](https://codeberg.org/thi.ng/umbrella/src/branch/develop/packages/geom/src/plane.ts) | 3D plane | ✅<sup>(1)</sup> |
96
+ | [Points](https://codeberg.org/thi.ng/umbrella/src/branch/develop/packages/geom/src/points.ts) | 2D point cloud | ✅ |
97
+ | [Points3](https://codeberg.org/thi.ng/umbrella/src/branch/develop/packages/geom/src/points3.ts) | 3D point cloud | ✅<sup>(1)</sup> |
98
+ | [Polygon](https://codeberg.org/thi.ng/umbrella/src/branch/develop/packages/geom/src/polygon.ts) | 2D simple polygon (no holes) | ✅ |
99
+ | [Polygon3](https://codeberg.org/thi.ng/umbrella/src/branch/develop/packages/geom/src/polygon3.ts) | 3D simple polygon (no holes) | ✅ |
100
+ | [Polyline](https://codeberg.org/thi.ng/umbrella/src/branch/develop/packages/geom/src/polyline.ts) | 2D polyline | ✅ |
101
+ | [Polyline3](https://codeberg.org/thi.ng/umbrella/src/branch/develop/packages/geom/src/polyline3.ts) | 3D polyline | ✅<sup>(1)</sup> |
102
+ | [Quad](https://codeberg.org/thi.ng/umbrella/src/branch/develop/packages/geom/src/quad.ts) | 2D quad (4-gon) | ✅ |
103
+ | [Quad3](https://codeberg.org/thi.ng/umbrella/src/branch/develop/packages/geom/src/quad3.ts) | 2D quad (4-gon) | ✅<sup>(1)</sup> |
104
+ | [Quadratic](https://codeberg.org/thi.ng/umbrella/src/branch/develop/packages/geom/src/quadratic.ts) | 2D quadratic bezier | ✅ |
105
+ | [Quadratic3](https://codeberg.org/thi.ng/umbrella/src/branch/develop/packages/geom/src/quadratic3.ts) | 3D quadratic bezier | ✅<sup>(1)</sup> |
106
+ | [Ray](https://codeberg.org/thi.ng/umbrella/src/branch/develop/packages/geom/src/ray.ts) | 2D ray | ✅ |
107
+ | [Ray3](https://codeberg.org/thi.ng/umbrella/src/branch/develop/packages/geom/src/ray3.ts) | 3D ray | ✅<sup>(1)</sup> |
108
+ | [Rectangle](https://codeberg.org/thi.ng/umbrella/src/branch/develop/packages/geom/src/rect.ts) | 2D rectangle | ✅ |
109
+ | [Sphere](https://codeberg.org/thi.ng/umbrella/src/branch/develop/packages/geom/src/sphere.ts) | 3D sphere | ✅<sup>(1)</sup> |
110
+ | [Text](https://codeberg.org/thi.ng/umbrella/src/branch/develop/packages/geom/src/text.ts) | Basic stub for text labels | ✅<sup>(3)</sup> |
111
+ | [Triangle](https://codeberg.org/thi.ng/umbrella/src/branch/develop/packages/geom/src/triangle.ts) | 2D triangle | ✅ |
112
+ | [Triangle3](https://codeberg.org/thi.ng/umbrella/src/branch/develop/packages/geom/src/triangle3.ts) | 3D triangle | ✅<sup>(1)</sup> |
112
113
 
113
114
  - <sup>(1)</sup> valid hiccup format, but currently still missing **external** tool/library support
114
115
  - <sup>(2)</sup> only lines, cubic & quadratic curve segments supported
@@ -122,12 +123,12 @@ linked sources and/or docs.
122
123
  With very few exceptions these all are implementing the [`IToHiccup`
123
124
  interface](https://docs.thi.ng/umbrella/api/interfaces/IToHiccup.html) and so
124
125
  can be easily converted (via
125
- [hiccup](https://github.com/thi-ng/umbrella/tree/develop/packages/hiccup)) to a
126
+ [hiccup](https://codeberg.org/thi.ng/umbrella/src/branch/develop/packages/hiccup)) to a
126
127
  variety of other formats, incl. [conversion to SVG](#svg-support).
127
128
 
128
129
  By design, for more flexibility and for performance reasons, the hiccup flavor
129
130
  used by this package is **not** compatible with that used by
130
- [thi.ng/hiccup-svg](https://github.com/thi-ng/umbrella/tree/develop/packages/hiccup-svg),
131
+ [thi.ng/hiccup-svg](https://codeberg.org/thi.ng/umbrella/src/branch/develop/packages/hiccup-svg),
131
132
  though the latter provides a
132
133
  [`convertTree()`](https://docs.thi.ng/umbrella/hiccup-svg/functions/convertTree.html)
133
134
  function for that purpose. This is only needed for some cases of dynamic
@@ -135,7 +136,7 @@ in-browser SVG DOM creation...
135
136
 
136
137
  Instead, the hiccup format used here for interim interop is compatible with that
137
138
  used by the
138
- [thi.ng/hiccup-canvas](https://github.com/thi-ng/umbrella/tree/develop/packages/hiccup-canvas)
139
+ [thi.ng/hiccup-canvas](https://codeberg.org/thi.ng/umbrella/src/branch/develop/packages/hiccup-canvas)
139
140
  package (see its readme for details) and avoids extraneous stringification of
140
141
  geometry data and attrib values. A brief example to illustrate some differences:
141
142
 
@@ -347,7 +348,7 @@ To be used with [`subdivideCurve()`](https://docs.thi.ng/umbrella/geom/functions
347
348
  To be used with [`tessellate()`](https://docs.thi.ng/umbrella/geom/functions/tessellate.html):
348
349
 
349
350
  See [thi.ng/geom-tessellate
350
- readme](https://github.com/thi-ng/umbrella/blob/develop/packages/geom-tessellate/README.md#tessellators)
351
+ readme](https://codeberg.org/thi.ng/umbrella/src/branch/develop/packages/geom-tessellate/README.md#tessellators)
351
352
  for diagrams/illustrations of each algorithm!
352
353
 
353
354
  - [TESSELLATE_EARCUT](https://docs.thi.ng/umbrella/geom/functions/TESSELLATE_EARCUT.html)
@@ -388,42 +389,42 @@ packages (which are more low-level, lightweight and usable by themselves too):
388
389
 
389
390
  ## Support packages
390
391
 
391
- - [@thi.ng/geom-accel](https://github.com/thi-ng/umbrella/tree/develop/packages/geom-accel) - n-D spatial indexing data structures with a shared ES6 Map/Set-like API
392
- - [@thi.ng/geom-arc](https://github.com/thi-ng/umbrella/tree/develop/packages/geom-arc) - 2D circular / elliptic arc operations
393
- - [@thi.ng/geom-axidraw](https://github.com/thi-ng/umbrella/tree/develop/packages/geom-axidraw) - Conversion and preparation of thi.ng/geom shapes & shape groups to/from AxiDraw pen plotter draw commands
394
- - [@thi.ng/geom-clip-line](https://github.com/thi-ng/umbrella/tree/develop/packages/geom-clip-line) - 2D line clipping (Liang-Barsky)
395
- - [@thi.ng/geom-clip-poly](https://github.com/thi-ng/umbrella/tree/develop/packages/geom-clip-poly) - 2D polygon clipping / offsetting (Sutherland-Hodgeman, Grainer-Hormann)
396
- - [@thi.ng/geom-closest-point](https://github.com/thi-ng/umbrella/tree/develop/packages/geom-closest-point) - 2D / 3D closest point / proximity helpers
397
- - [@thi.ng/geom-fuzz](https://github.com/thi-ng/umbrella/tree/develop/packages/geom-fuzz) - Highly configurable, fuzzy line & polygon creation with presets and composable fill & stroke styles. Canvas & SVG support
398
- - [@thi.ng/geom-hull](https://github.com/thi-ng/umbrella/tree/develop/packages/geom-hull) - Fast 2D convex hull (Graham Scan)
399
- - [@thi.ng/geom-io-obj](https://github.com/thi-ng/umbrella/tree/develop/packages/geom-io-obj) - Wavefront OBJ parser (& exporter soon)
400
- - [@thi.ng/geom-isec](https://github.com/thi-ng/umbrella/tree/develop/packages/geom-isec) - 2D/3D shape intersection checks
401
- - [@thi.ng/geom-isoline](https://github.com/thi-ng/umbrella/tree/develop/packages/geom-isoline) - Fast 2D contour line extraction / generation
402
- - [@thi.ng/geom-poly-utils](https://github.com/thi-ng/umbrella/tree/develop/packages/geom-poly-utils) - 2D polygon/polyline analysis & processing utilities
403
- - [@thi.ng/geom-resample](https://github.com/thi-ng/umbrella/tree/develop/packages/geom-resample) - Customizable nD polyline interpolation, re-sampling, splitting & nearest point computation
404
- - [@thi.ng/geom-sdf](https://github.com/thi-ng/umbrella/tree/develop/packages/geom-sdf) - 2D Signed Distance Field creation from [@thi.ng/geom](https://github.com/thi-ng/umbrella/tree/develop/packages/geom) shapes, conversions, sampling, combinators
405
- - [@thi.ng/geom-splines](https://github.com/thi-ng/umbrella/tree/develop/packages/geom-splines) - nD cubic & quadratic curve analysis, conversion, interpolation, splitting
406
- - [@thi.ng/geom-subdiv-curve](https://github.com/thi-ng/umbrella/tree/develop/packages/geom-subdiv-curve) - Freely customizable, iterative nD subdivision curves for open / closed geometries
407
- - [@thi.ng/geom-tessellate](https://github.com/thi-ng/umbrella/tree/develop/packages/geom-tessellate) - 2D/3D convex polygon tessellators
408
- - [@thi.ng/geom-trace-bitmap](https://github.com/thi-ng/umbrella/tree/develop/packages/geom-trace-bitmap) - Bitmap image to hairline vector and point cloud conversions
409
- - [@thi.ng/geom-voronoi](https://github.com/thi-ng/umbrella/tree/develop/packages/geom-voronoi) - Fast, incremental 2D Delaunay & Voronoi mesh implementation
410
- - [@thi.ng/geom-webgl](https://github.com/thi-ng/umbrella/tree/develop/packages/geom-webgl) - WebGL geometry/shape conversion & interop
392
+ - [@thi.ng/geom-accel](https://codeberg.org/thi.ng/umbrella/src/branch/develop/packages/geom-accel) - n-D spatial indexing data structures with a shared ES6 Map/Set-like API
393
+ - [@thi.ng/geom-arc](https://codeberg.org/thi.ng/umbrella/src/branch/develop/packages/geom-arc) - 2D circular / elliptic arc operations
394
+ - [@thi.ng/geom-axidraw](https://codeberg.org/thi.ng/umbrella/src/branch/develop/packages/geom-axidraw) - Conversion and preparation of thi.ng/geom shapes & shape groups to/from AxiDraw pen plotter draw commands
395
+ - [@thi.ng/geom-clip-line](https://codeberg.org/thi.ng/umbrella/src/branch/develop/packages/geom-clip-line) - 2D line clipping (Liang-Barsky)
396
+ - [@thi.ng/geom-clip-poly](https://codeberg.org/thi.ng/umbrella/src/branch/develop/packages/geom-clip-poly) - 2D polygon clipping / offsetting (Sutherland-Hodgeman, Grainer-Hormann)
397
+ - [@thi.ng/geom-closest-point](https://codeberg.org/thi.ng/umbrella/src/branch/develop/packages/geom-closest-point) - 2D / 3D closest point / proximity helpers
398
+ - [@thi.ng/geom-fuzz](https://codeberg.org/thi.ng/umbrella/src/branch/develop/packages/geom-fuzz) - Highly configurable, fuzzy line & polygon creation with presets and composable fill & stroke styles. Canvas & SVG support
399
+ - [@thi.ng/geom-hull](https://codeberg.org/thi.ng/umbrella/src/branch/develop/packages/geom-hull) - Fast 2D convex hull (Graham Scan)
400
+ - [@thi.ng/geom-io-obj](https://codeberg.org/thi.ng/umbrella/src/branch/develop/packages/geom-io-obj) - Wavefront OBJ parser (& exporter soon)
401
+ - [@thi.ng/geom-isec](https://codeberg.org/thi.ng/umbrella/src/branch/develop/packages/geom-isec) - 2D/3D shape intersection checks
402
+ - [@thi.ng/geom-isoline](https://codeberg.org/thi.ng/umbrella/src/branch/develop/packages/geom-isoline) - Fast 2D contour line extraction / generation
403
+ - [@thi.ng/geom-poly-utils](https://codeberg.org/thi.ng/umbrella/src/branch/develop/packages/geom-poly-utils) - 2D polygon/polyline analysis & processing utilities
404
+ - [@thi.ng/geom-resample](https://codeberg.org/thi.ng/umbrella/src/branch/develop/packages/geom-resample) - Customizable nD polyline interpolation, re-sampling, splitting & nearest point computation
405
+ - [@thi.ng/geom-sdf](https://codeberg.org/thi.ng/umbrella/src/branch/develop/packages/geom-sdf) - 2D Signed Distance Field creation from [@thi.ng/geom](https://codeberg.org/thi.ng/umbrella/src/branch/develop/packages/geom) shapes, conversions, sampling, combinators
406
+ - [@thi.ng/geom-splines](https://codeberg.org/thi.ng/umbrella/src/branch/develop/packages/geom-splines) - nD cubic & quadratic curve analysis, conversion, interpolation, splitting
407
+ - [@thi.ng/geom-subdiv-curve](https://codeberg.org/thi.ng/umbrella/src/branch/develop/packages/geom-subdiv-curve) - Freely customizable, iterative nD subdivision curves for open / closed geometries
408
+ - [@thi.ng/geom-tessellate](https://codeberg.org/thi.ng/umbrella/src/branch/develop/packages/geom-tessellate) - 2D/3D convex polygon tessellators
409
+ - [@thi.ng/geom-trace-bitmap](https://codeberg.org/thi.ng/umbrella/src/branch/develop/packages/geom-trace-bitmap) - Bitmap image to hairline vector and point cloud conversions
410
+ - [@thi.ng/geom-voronoi](https://codeberg.org/thi.ng/umbrella/src/branch/develop/packages/geom-voronoi) - Fast, incremental 2D Delaunay & Voronoi mesh implementation
411
+ - [@thi.ng/geom-webgl](https://codeberg.org/thi.ng/umbrella/src/branch/develop/packages/geom-webgl) - WebGL geometry/shape conversion & interop
411
412
 
412
413
  ## Related packages
413
414
 
414
- - [@thi.ng/axidraw](https://github.com/thi-ng/umbrella/tree/develop/packages/axidraw) - Minimal AxiDraw plotter/drawing machine controller for Node.js
415
- - [@thi.ng/color](https://github.com/thi-ng/umbrella/tree/develop/packages/color) - Array-based color types, CSS parsing, conversions, transformations, declarative theme generation, gradients, presets
416
- - [@thi.ng/hiccup](https://github.com/thi-ng/umbrella/tree/develop/packages/hiccup) - HTML/SVG/XML serialization of nested data structures, iterables & closures
417
- - [@thi.ng/hiccup-canvas](https://github.com/thi-ng/umbrella/tree/develop/packages/hiccup-canvas) - Hiccup shape tree renderer for vanilla Canvas 2D contexts
418
- - [@thi.ng/hiccup-svg](https://github.com/thi-ng/umbrella/tree/develop/packages/hiccup-svg) - SVG element functions for [@thi.ng/hiccup](https://github.com/thi-ng/umbrella/tree/develop/packages/hiccup) & related tooling
419
- - [@thi.ng/viz](https://github.com/thi-ng/umbrella/tree/develop/packages/viz) - Declarative, functional & multi-format data visualization toolkit based around [@thi.ng/hiccup](https://github.com/thi-ng/umbrella/tree/develop/packages/hiccup)
420
- - [@thi.ng/webgl](https://github.com/thi-ng/umbrella/tree/develop/packages/webgl) - WebGL & GLSL abstraction layer
415
+ - [@thi.ng/axidraw](https://codeberg.org/thi.ng/umbrella/src/branch/develop/packages/axidraw) - Minimal AxiDraw plotter/drawing machine controller for Node.js
416
+ - [@thi.ng/color](https://codeberg.org/thi.ng/umbrella/src/branch/develop/packages/color) - Array-based color types, CSS parsing, conversions, transformations, declarative theme generation, gradients, presets
417
+ - [@thi.ng/hiccup](https://codeberg.org/thi.ng/umbrella/src/branch/develop/packages/hiccup) - HTML/SVG/XML serialization of nested data structures, iterables & closures
418
+ - [@thi.ng/hiccup-canvas](https://codeberg.org/thi.ng/umbrella/src/branch/develop/packages/hiccup-canvas) - Hiccup shape tree renderer for vanilla Canvas 2D contexts
419
+ - [@thi.ng/hiccup-svg](https://codeberg.org/thi.ng/umbrella/src/branch/develop/packages/hiccup-svg) - SVG element functions for [@thi.ng/hiccup](https://codeberg.org/thi.ng/umbrella/src/branch/develop/packages/hiccup) & related tooling
420
+ - [@thi.ng/viz](https://codeberg.org/thi.ng/umbrella/src/branch/develop/packages/viz) - Declarative, functional & multi-format data visualization toolkit based around [@thi.ng/hiccup](https://codeberg.org/thi.ng/umbrella/src/branch/develop/packages/hiccup)
421
+ - [@thi.ng/webgl](https://codeberg.org/thi.ng/umbrella/src/branch/develop/packages/webgl) - WebGL & GLSL abstraction layer
421
422
 
422
423
  ## Status
423
424
 
424
425
  **STABLE** - used in production
425
426
 
426
- [Search or submit any issues for this package](https://github.com/thi-ng/umbrella/issues?q=%5Bgeom%5D+in%3Atitle)
427
+ [Search or submit any issues for this package](https://codeberg.org/thi.ng/umbrella/issues?q=%5Bgeom%5D)
427
428
 
428
429
  ## Installation
429
430
 
@@ -455,84 +456,84 @@ Package sizes (brotli'd, pre-treeshake): ESM: 17.53 KB
455
456
 
456
457
  ## Dependencies
457
458
 
458
- - [@thi.ng/adjacency](https://github.com/thi-ng/umbrella/tree/develop/packages/adjacency)
459
- - [@thi.ng/api](https://github.com/thi-ng/umbrella/tree/develop/packages/api)
460
- - [@thi.ng/arrays](https://github.com/thi-ng/umbrella/tree/develop/packages/arrays)
461
- - [@thi.ng/checks](https://github.com/thi-ng/umbrella/tree/develop/packages/checks)
462
- - [@thi.ng/defmulti](https://github.com/thi-ng/umbrella/tree/develop/packages/defmulti)
463
- - [@thi.ng/equiv](https://github.com/thi-ng/umbrella/tree/develop/packages/equiv)
464
- - [@thi.ng/errors](https://github.com/thi-ng/umbrella/tree/develop/packages/errors)
465
- - [@thi.ng/geom-arc](https://github.com/thi-ng/umbrella/tree/develop/packages/geom-arc)
466
- - [@thi.ng/geom-clip-line](https://github.com/thi-ng/umbrella/tree/develop/packages/geom-clip-line)
467
- - [@thi.ng/geom-clip-poly](https://github.com/thi-ng/umbrella/tree/develop/packages/geom-clip-poly)
468
- - [@thi.ng/geom-closest-point](https://github.com/thi-ng/umbrella/tree/develop/packages/geom-closest-point)
469
- - [@thi.ng/geom-hull](https://github.com/thi-ng/umbrella/tree/develop/packages/geom-hull)
470
- - [@thi.ng/geom-isec](https://github.com/thi-ng/umbrella/tree/develop/packages/geom-isec)
471
- - [@thi.ng/geom-poly-utils](https://github.com/thi-ng/umbrella/tree/develop/packages/geom-poly-utils)
472
- - [@thi.ng/geom-resample](https://github.com/thi-ng/umbrella/tree/develop/packages/geom-resample)
473
- - [@thi.ng/geom-splines](https://github.com/thi-ng/umbrella/tree/develop/packages/geom-splines)
474
- - [@thi.ng/geom-subdiv-curve](https://github.com/thi-ng/umbrella/tree/develop/packages/geom-subdiv-curve)
475
- - [@thi.ng/geom-tessellate](https://github.com/thi-ng/umbrella/tree/develop/packages/geom-tessellate)
476
- - [@thi.ng/hiccup](https://github.com/thi-ng/umbrella/tree/develop/packages/hiccup)
477
- - [@thi.ng/hiccup-svg](https://github.com/thi-ng/umbrella/tree/develop/packages/hiccup-svg)
478
- - [@thi.ng/math](https://github.com/thi-ng/umbrella/tree/develop/packages/math)
479
- - [@thi.ng/matrices](https://github.com/thi-ng/umbrella/tree/develop/packages/matrices)
480
- - [@thi.ng/object-utils](https://github.com/thi-ng/umbrella/tree/develop/packages/object-utils)
481
- - [@thi.ng/random](https://github.com/thi-ng/umbrella/tree/develop/packages/random)
482
- - [@thi.ng/strings](https://github.com/thi-ng/umbrella/tree/develop/packages/strings)
483
- - [@thi.ng/transducers](https://github.com/thi-ng/umbrella/tree/develop/packages/transducers)
484
- - [@thi.ng/vectors](https://github.com/thi-ng/umbrella/tree/develop/packages/vectors)
459
+ - [@thi.ng/adjacency](https://codeberg.org/thi.ng/umbrella/src/branch/develop/packages/adjacency)
460
+ - [@thi.ng/api](https://codeberg.org/thi.ng/umbrella/src/branch/develop/packages/api)
461
+ - [@thi.ng/arrays](https://codeberg.org/thi.ng/umbrella/src/branch/develop/packages/arrays)
462
+ - [@thi.ng/checks](https://codeberg.org/thi.ng/umbrella/src/branch/develop/packages/checks)
463
+ - [@thi.ng/defmulti](https://codeberg.org/thi.ng/umbrella/src/branch/develop/packages/defmulti)
464
+ - [@thi.ng/equiv](https://codeberg.org/thi.ng/umbrella/src/branch/develop/packages/equiv)
465
+ - [@thi.ng/errors](https://codeberg.org/thi.ng/umbrella/src/branch/develop/packages/errors)
466
+ - [@thi.ng/geom-arc](https://codeberg.org/thi.ng/umbrella/src/branch/develop/packages/geom-arc)
467
+ - [@thi.ng/geom-clip-line](https://codeberg.org/thi.ng/umbrella/src/branch/develop/packages/geom-clip-line)
468
+ - [@thi.ng/geom-clip-poly](https://codeberg.org/thi.ng/umbrella/src/branch/develop/packages/geom-clip-poly)
469
+ - [@thi.ng/geom-closest-point](https://codeberg.org/thi.ng/umbrella/src/branch/develop/packages/geom-closest-point)
470
+ - [@thi.ng/geom-hull](https://codeberg.org/thi.ng/umbrella/src/branch/develop/packages/geom-hull)
471
+ - [@thi.ng/geom-isec](https://codeberg.org/thi.ng/umbrella/src/branch/develop/packages/geom-isec)
472
+ - [@thi.ng/geom-poly-utils](https://codeberg.org/thi.ng/umbrella/src/branch/develop/packages/geom-poly-utils)
473
+ - [@thi.ng/geom-resample](https://codeberg.org/thi.ng/umbrella/src/branch/develop/packages/geom-resample)
474
+ - [@thi.ng/geom-splines](https://codeberg.org/thi.ng/umbrella/src/branch/develop/packages/geom-splines)
475
+ - [@thi.ng/geom-subdiv-curve](https://codeberg.org/thi.ng/umbrella/src/branch/develop/packages/geom-subdiv-curve)
476
+ - [@thi.ng/geom-tessellate](https://codeberg.org/thi.ng/umbrella/src/branch/develop/packages/geom-tessellate)
477
+ - [@thi.ng/hiccup](https://codeberg.org/thi.ng/umbrella/src/branch/develop/packages/hiccup)
478
+ - [@thi.ng/hiccup-svg](https://codeberg.org/thi.ng/umbrella/src/branch/develop/packages/hiccup-svg)
479
+ - [@thi.ng/math](https://codeberg.org/thi.ng/umbrella/src/branch/develop/packages/math)
480
+ - [@thi.ng/matrices](https://codeberg.org/thi.ng/umbrella/src/branch/develop/packages/matrices)
481
+ - [@thi.ng/object-utils](https://codeberg.org/thi.ng/umbrella/src/branch/develop/packages/object-utils)
482
+ - [@thi.ng/random](https://codeberg.org/thi.ng/umbrella/src/branch/develop/packages/random)
483
+ - [@thi.ng/strings](https://codeberg.org/thi.ng/umbrella/src/branch/develop/packages/strings)
484
+ - [@thi.ng/transducers](https://codeberg.org/thi.ng/umbrella/src/branch/develop/packages/transducers)
485
+ - [@thi.ng/vectors](https://codeberg.org/thi.ng/umbrella/src/branch/develop/packages/vectors)
485
486
 
486
487
  Note: @thi.ng/api is in _most_ cases a type-only import (not used at runtime)
487
488
 
488
489
  ## Usage examples
489
490
 
490
491
  40 projects in this repo's
491
- [/examples](https://github.com/thi-ng/umbrella/tree/develop/examples)
492
+ [/examples](https://codeberg.org/thi.ng/umbrella/src/branch/develop/examples)
492
493
  directory are using this package:
493
494
 
494
- | Screenshot | Description | Live demo | Source |
495
- |:------------------------------------------------------------------------------------------------------------------------------|:---------------------------------------------------------------------------------|:-------------------------------------------------------------|:------------------------------------------------------------------------------------------|
496
- | <img src="https://raw.githubusercontent.com/thi-ng/umbrella/develop/assets/examples/boid-basics.png" width="240"/> | Basic 2D boid simulation and spatial indexing neighbor lookups | [Demo](https://demo.thi.ng/umbrella/boid-basics/) | [Source](https://github.com/thi-ng/umbrella/tree/develop/examples/boid-basics) |
497
- | <img src="https://raw.githubusercontent.com/thi-ng/umbrella/develop/assets/examples/calibration-sheet.avif" width="240"/> | Parametrically design calibration sheet for B&W photography | [Demo](https://demo.thi.ng/umbrella/calibration-sheet/) | [Source](https://github.com/thi-ng/umbrella/tree/develop/examples/calibration-sheet) |
498
- | <img src="https://raw.githubusercontent.com/thi-ng/umbrella/develop/assets/examples/canvas-recorder.png" width="240"/> | Self-modifying, animated typographic grid with emergent complex patterns | [Demo](https://demo.thi.ng/umbrella/canvas-recorder/) | [Source](https://github.com/thi-ng/umbrella/tree/develop/examples/canvas-recorder) |
499
- | <img src="https://raw.githubusercontent.com/thi-ng/umbrella/develop/assets/examples/fiber-basics.png" width="240"/> | Fiber-based cooperative multitasking basics | [Demo](https://demo.thi.ng/umbrella/fiber-basics/) | [Source](https://github.com/thi-ng/umbrella/tree/develop/examples/fiber-basics) |
500
- | <img src="https://raw.githubusercontent.com/thi-ng/umbrella/develop/assets/examples/geom-classify-point.png" width="240"/> | Polygon point classification (inside/boundary/outside) | [Demo](https://demo.thi.ng/umbrella/geom-classify-point/) | [Source](https://github.com/thi-ng/umbrella/tree/develop/examples/geom-classify-point) |
501
- | <img src="https://raw.githubusercontent.com/thi-ng/umbrella/develop/assets/examples/geom-complex-poly.png" width="240"/> | Shape conversions & operations using polygons with holes | [Demo](https://demo.thi.ng/umbrella/geom-complex-poly/) | [Source](https://github.com/thi-ng/umbrella/tree/develop/examples/geom-complex-poly) |
502
- | <img src="https://raw.githubusercontent.com/thi-ng/umbrella/develop/assets/examples/geom-convex-hull.png" width="240"/> | Convex hull & shape clipping of 2D polygons | [Demo](https://demo.thi.ng/umbrella/geom-convex-hull/) | [Source](https://github.com/thi-ng/umbrella/tree/develop/examples/geom-convex-hull) |
503
- | <img src="https://raw.githubusercontent.com/thi-ng/umbrella/develop/assets/examples/geom-csv-piechart.png" width="240"/> | Piechart visualization of CSV data | [Demo](https://demo.thi.ng/umbrella/geom-csv-piechart/) | [Source](https://github.com/thi-ng/umbrella/tree/develop/examples/geom-csv-piechart) |
504
- | <img src="https://raw.githubusercontent.com/thi-ng/umbrella/develop/assets/examples/geom-extra-hiccup.jpg" width="240"/> | Embedding thi.ng/hiccup data/elements in thi.ng/geom shape hierarchies | [Demo](https://demo.thi.ng/umbrella/geom-extra-hiccup/) | [Source](https://github.com/thi-ng/umbrella/tree/develop/examples/geom-extra-hiccup) |
505
- | <img src="https://raw.githubusercontent.com/thi-ng/umbrella/develop/assets/geom/geom-fuzz.png" width="240"/> | geom-fuzz basic shape & fill examples | [Demo](https://demo.thi.ng/umbrella/geom-fuzz-basics/) | [Source](https://github.com/thi-ng/umbrella/tree/develop/examples/geom-fuzz-basics) |
506
- | <img src="https://raw.githubusercontent.com/thi-ng/umbrella/develop/assets/examples/geom-hexgrid.png" width="240"/> | Hex grid generation & tessellations | [Demo](https://demo.thi.ng/umbrella/geom-hexgrid/) | [Source](https://github.com/thi-ng/umbrella/tree/develop/examples/geom-hexgrid) |
507
- | <img src="https://raw.githubusercontent.com/thi-ng/umbrella/develop/assets/examples/geom-sdf-logo.jpg" width="240"/> | (Re)Constructing the thi.ng logo using a 2D signed-distance field | [Demo](https://demo.thi.ng/umbrella/geom-sdf-logo/) | [Source](https://github.com/thi-ng/umbrella/tree/develop/examples/geom-sdf-logo) |
508
- | <img src="https://raw.githubusercontent.com/thi-ng/umbrella/develop/assets/examples/geom-sdf-path.png" width="240"/> | SVG path to SDF, applying deformation and converting back to SVG | [Demo](https://demo.thi.ng/umbrella/geom-sdf-path/) | [Source](https://github.com/thi-ng/umbrella/tree/develop/examples/geom-sdf-path) |
509
- | <img src="https://raw.githubusercontent.com/thi-ng/umbrella/develop/assets/examples/geom-terrain-viz.jpg" width="240"/> | 2.5D hidden line visualization of digital elevation files (DEM) | [Demo](https://demo.thi.ng/umbrella/geom-terrain-viz/) | [Source](https://github.com/thi-ng/umbrella/tree/develop/examples/geom-terrain-viz) |
510
- | <img src="https://raw.githubusercontent.com/thi-ng/umbrella/develop/assets/geom/tessel.png" width="240"/> | Animated, recursive polygon tessellations | [Demo](https://demo.thi.ng/umbrella/geom-tessel/) | [Source](https://github.com/thi-ng/umbrella/tree/develop/examples/geom-tessel) |
511
- | <img src="https://raw.githubusercontent.com/thi-ng/umbrella/develop/assets/examples/geom-unique-edges.png" width="240"/> | Iterating the unique edges of a tessellation | [Demo](https://demo.thi.ng/umbrella/geom-unique-edges/) | [Source](https://github.com/thi-ng/umbrella/tree/develop/examples/geom-unique-edges) |
512
- | <img src="https://raw.githubusercontent.com/thi-ng/umbrella/develop/assets/examples/geom-voronoi-mst.jpg" width="240"/> | Poisson-disk shape-aware sampling, Voronoi & Minimum Spanning Tree visualization | [Demo](https://demo.thi.ng/umbrella/geom-voronoi-mst/) | [Source](https://github.com/thi-ng/umbrella/tree/develop/examples/geom-voronoi-mst) |
513
- | <img src="https://raw.githubusercontent.com/thi-ng/umbrella/develop/assets/examples/geom-webgl-attrib-pool.jpg" width="240"/> | Augmenting thi.ng/geom shapes for WebGL, using instancing & attribute buffers | [Demo](https://demo.thi.ng/umbrella/geom-webgl-attrib-pool/) | [Source](https://github.com/thi-ng/umbrella/tree/develop/examples/geom-webgl-attrib-pool) |
514
- | <img src="https://raw.githubusercontent.com/thi-ng/umbrella/develop/assets/examples/geom-webgl-basics.jpg" width="240"/> | Converting thi.ng/geom shape types for WebGL | [Demo](https://demo.thi.ng/umbrella/geom-webgl-basics/) | [Source](https://github.com/thi-ng/umbrella/tree/develop/examples/geom-webgl-basics) |
515
- | <img src="https://raw.githubusercontent.com/thi-ng/umbrella/develop/assets/examples/gesture-analysis.png" width="240"/> | Mouse gesture / stroke analysis, simplification, corner detection | [Demo](https://demo.thi.ng/umbrella/gesture-analysis/) | [Source](https://github.com/thi-ng/umbrella/tree/develop/examples/gesture-analysis) |
516
- | <img src="https://raw.githubusercontent.com/thi-ng/umbrella/develop/assets/examples/hdom-canvas-particles.jpg" width="240"/> | 2D Bezier curve-guided particle system | [Demo](https://demo.thi.ng/umbrella/hdom-canvas-particles/) | [Source](https://github.com/thi-ng/umbrella/tree/develop/examples/hdom-canvas-particles) |
517
- | <img src="https://raw.githubusercontent.com/thi-ng/umbrella/develop/assets/examples/hiccup-canvas-arcs.jpg" width="240"/> | Animated arcs & drawing using hiccup-canvas | [Demo](https://demo.thi.ng/umbrella/hiccup-canvas-arcs/) | [Source](https://github.com/thi-ng/umbrella/tree/develop/examples/hiccup-canvas-arcs) |
518
- | <img src="https://raw.githubusercontent.com/thi-ng/umbrella/develop/assets/imgui/imgui-all.png" width="240"/> | Canvas based Immediate Mode GUI components | [Demo](https://demo.thi.ng/umbrella/imgui/) | [Source](https://github.com/thi-ng/umbrella/tree/develop/examples/imgui) |
519
- | <img src="https://raw.githubusercontent.com/thi-ng/umbrella/develop/assets/geom/geom-isoline.png" width="240"/> | Animated sine plasma effect visualized using contour lines | [Demo](https://demo.thi.ng/umbrella/iso-plasma/) | [Source](https://github.com/thi-ng/umbrella/tree/develop/examples/iso-plasma) |
520
- | <img src="https://raw.githubusercontent.com/thi-ng/umbrella/develop/assets/examples/kmeans-viz.jpg" width="240"/> | k-means clustering visualization | [Demo](https://demo.thi.ng/umbrella/kmeans-viz/) | [Source](https://github.com/thi-ng/umbrella/tree/develop/examples/kmeans-viz) |
521
- | <img src="https://raw.githubusercontent.com/thi-ng/umbrella/develop/assets/examples/pointfree-geom.jpg" width="240"/> | Live coding playground for 2D geometry generation using @thi.ng/pointfree-lang | [Demo](https://demo.thi.ng/umbrella/pointfree-geom/) | [Source](https://github.com/thi-ng/umbrella/tree/develop/examples/pointfree-geom) |
522
- | <img src="https://raw.githubusercontent.com/thi-ng/umbrella/develop/assets/poisson/poisson.jpg" width="240"/> | 2D Poisson-disc sampler with procedural gradient map | [Demo](https://demo.thi.ng/umbrella/poisson-circles/) | [Source](https://github.com/thi-ng/umbrella/tree/develop/examples/poisson-circles) |
523
- | <img src="https://raw.githubusercontent.com/thi-ng/umbrella/develop/assets/examples/poly-spline.png" width="240"/> | Polygon to cubic curve conversion & visualization | [Demo](https://demo.thi.ng/umbrella/poly-spline/) | [Source](https://github.com/thi-ng/umbrella/tree/develop/examples/poly-spline) |
524
- | <img src="https://raw.githubusercontent.com/thi-ng/umbrella/develop/assets/examples/poly-subdiv.jpg" width="240"/> | Animated, iterative polygon subdivisions & visualization | [Demo](https://demo.thi.ng/umbrella/poly-subdiv/) | [Source](https://github.com/thi-ng/umbrella/tree/develop/examples/poly-subdiv) |
525
- | <img src="https://raw.githubusercontent.com/thi-ng/umbrella/develop/assets/examples/quasi-lattice.png" width="240"/> | Quasi-random lattice generator | [Demo](https://demo.thi.ng/umbrella/quasi-lattice/) | [Source](https://github.com/thi-ng/umbrella/tree/develop/examples/quasi-lattice) |
526
- | <img src="https://raw.githubusercontent.com/thi-ng/umbrella/develop/assets/examples/rdom-canvas-basics.jpg" width="240"/> | Minimal rdom-canvas animation | [Demo](https://demo.thi.ng/umbrella/rdom-canvas-basics/) | [Source](https://github.com/thi-ng/umbrella/tree/develop/examples/rdom-canvas-basics) |
527
- | <img src="https://raw.githubusercontent.com/thi-ng/umbrella/develop/assets/examples/rotating-voronoi.jpg" width="240"/> | Animated Voronoi diagram, cubic splines & SVG download | [Demo](https://demo.thi.ng/umbrella/rotating-voronoi/) | [Source](https://github.com/thi-ng/umbrella/tree/develop/examples/rotating-voronoi) |
528
- | <img src="https://raw.githubusercontent.com/thi-ng/umbrella/develop/assets/examples/scenegraph.png" width="240"/> | 2D scenegraph & shape picking | [Demo](https://demo.thi.ng/umbrella/scenegraph/) | [Source](https://github.com/thi-ng/umbrella/tree/develop/examples/scenegraph) |
529
- | <img src="https://raw.githubusercontent.com/thi-ng/umbrella/develop/assets/examples/scenegraph-image.png" width="240"/> | 2D scenegraph & image map based geometry manipulation | [Demo](https://demo.thi.ng/umbrella/scenegraph-image/) | [Source](https://github.com/thi-ng/umbrella/tree/develop/examples/scenegraph-image) |
530
- | <img src="https://raw.githubusercontent.com/thi-ng/umbrella/develop/assets/examples/scenegraph-pan-zoom.avif" width="240"/> | Basic 2D scenegraph example with pan/zoom functionality | [Demo](https://demo.thi.ng/umbrella/scenegraph-pan-zoom/) | [Source](https://github.com/thi-ng/umbrella/tree/develop/examples/scenegraph-pan-zoom) |
531
- | <img src="https://raw.githubusercontent.com/thi-ng/umbrella/develop/assets/examples/spline-tangent.png" width="240"/> | Compute cubic spline position & tangent using Dual Numbers | [Demo](https://demo.thi.ng/umbrella/spline-tangent/) | [Source](https://github.com/thi-ng/umbrella/tree/develop/examples/spline-tangent) |
532
- | <img src="https://raw.githubusercontent.com/thi-ng/umbrella/develop/assets/examples/svg-resample.png" width="240"/> | SVG path parsing & dynamic resampling | [Demo](https://demo.thi.ng/umbrella/svg-resample/) | [Source](https://github.com/thi-ng/umbrella/tree/develop/examples/svg-resample) |
533
- | <img src="https://raw.githubusercontent.com/thi-ng/umbrella/develop/assets/examples/text-canvas.png" width="240"/> | 3D wireframe textmode demo | [Demo](https://demo.thi.ng/umbrella/text-canvas/) | [Source](https://github.com/thi-ng/umbrella/tree/develop/examples/text-canvas) |
534
- | <img src="https://raw.githubusercontent.com/thi-ng/umbrella/develop/assets/examples/trace-bitmap.jpg" width="240"/> | Multi-layer vectorization & dithering of bitmap images | [Demo](https://demo.thi.ng/umbrella/trace-bitmap/) | [Source](https://github.com/thi-ng/umbrella/tree/develop/examples/trace-bitmap) |
535
- | <img src="https://raw.githubusercontent.com/thi-ng/umbrella/develop/assets/examples/tsne-colors.avif" width="240"/> | Animated t-SNE visualization of 4D data | [Demo](https://demo.thi.ng/umbrella/tsne-colors/) | [Source](https://github.com/thi-ng/umbrella/tree/develop/examples/tsne-colors) |
495
+ | Screenshot | Description | Live demo | Source |
496
+ |:------------------------------------------------------------------------------------------------------------------------------|:---------------------------------------------------------------------------------|:-------------------------------------------------------------|:--------------------------------------------------------------------------------------------------|
497
+ | <img src="https://codeberg.org/thi.ng/umbrella/media/branch/develop/assets/examples/boid-basics.png" width="240"/> | Basic 2D boid simulation and spatial indexing neighbor lookups | [Demo](https://demo.thi.ng/umbrella/boid-basics/) | [Source](https://codeberg.org/thi.ng/umbrella/src/branch/develop/examples/boid-basics) |
498
+ | <img src="https://codeberg.org/thi.ng/umbrella/media/branch/develop/assets/examples/calibration-sheet.avif" width="240"/> | Parametrically design calibration sheet for B&W photography | [Demo](https://demo.thi.ng/umbrella/calibration-sheet/) | [Source](https://codeberg.org/thi.ng/umbrella/src/branch/develop/examples/calibration-sheet) |
499
+ | <img src="https://codeberg.org/thi.ng/umbrella/media/branch/develop/assets/examples/canvas-recorder.png" width="240"/> | Self-modifying, animated typographic grid with emergent complex patterns | [Demo](https://demo.thi.ng/umbrella/canvas-recorder/) | [Source](https://codeberg.org/thi.ng/umbrella/src/branch/develop/examples/canvas-recorder) |
500
+ | <img src="https://codeberg.org/thi.ng/umbrella/media/branch/develop/assets/examples/fiber-basics.png" width="240"/> | Fiber-based cooperative multitasking basics | [Demo](https://demo.thi.ng/umbrella/fiber-basics/) | [Source](https://codeberg.org/thi.ng/umbrella/src/branch/develop/examples/fiber-basics) |
501
+ | <img src="https://codeberg.org/thi.ng/umbrella/media/branch/develop/assets/examples/geom-classify-point.png" width="240"/> | Polygon point classification (inside/boundary/outside) | [Demo](https://demo.thi.ng/umbrella/geom-classify-point/) | [Source](https://codeberg.org/thi.ng/umbrella/src/branch/develop/examples/geom-classify-point) |
502
+ | <img src="https://codeberg.org/thi.ng/umbrella/media/branch/develop/assets/examples/geom-complex-poly.png" width="240"/> | Shape conversions & operations using polygons with holes | [Demo](https://demo.thi.ng/umbrella/geom-complex-poly/) | [Source](https://codeberg.org/thi.ng/umbrella/src/branch/develop/examples/geom-complex-poly) |
503
+ | <img src="https://codeberg.org/thi.ng/umbrella/media/branch/develop/assets/examples/geom-convex-hull.png" width="240"/> | Convex hull & shape clipping of 2D polygons | [Demo](https://demo.thi.ng/umbrella/geom-convex-hull/) | [Source](https://codeberg.org/thi.ng/umbrella/src/branch/develop/examples/geom-convex-hull) |
504
+ | <img src="https://codeberg.org/thi.ng/umbrella/media/branch/develop/assets/examples/geom-csv-piechart.png" width="240"/> | Piechart visualization of CSV data | [Demo](https://demo.thi.ng/umbrella/geom-csv-piechart/) | [Source](https://codeberg.org/thi.ng/umbrella/src/branch/develop/examples/geom-csv-piechart) |
505
+ | <img src="https://codeberg.org/thi.ng/umbrella/media/branch/develop/assets/examples/geom-extra-hiccup.jpg" width="240"/> | Embedding thi.ng/hiccup data/elements in thi.ng/geom shape hierarchies | [Demo](https://demo.thi.ng/umbrella/geom-extra-hiccup/) | [Source](https://codeberg.org/thi.ng/umbrella/src/branch/develop/examples/geom-extra-hiccup) |
506
+ | <img src="https://codeberg.org/thi.ng/umbrella/media/branch/develop/assets/geom/geom-fuzz.png" width="240"/> | geom-fuzz basic shape & fill examples | [Demo](https://demo.thi.ng/umbrella/geom-fuzz-basics/) | [Source](https://codeberg.org/thi.ng/umbrella/src/branch/develop/examples/geom-fuzz-basics) |
507
+ | <img src="https://codeberg.org/thi.ng/umbrella/media/branch/develop/assets/examples/geom-hexgrid.png" width="240"/> | Hex grid generation & tessellations | [Demo](https://demo.thi.ng/umbrella/geom-hexgrid/) | [Source](https://codeberg.org/thi.ng/umbrella/src/branch/develop/examples/geom-hexgrid) |
508
+ | <img src="https://codeberg.org/thi.ng/umbrella/media/branch/develop/assets/examples/geom-sdf-logo.jpg" width="240"/> | (Re)Constructing the thi.ng logo using a 2D signed-distance field | [Demo](https://demo.thi.ng/umbrella/geom-sdf-logo/) | [Source](https://codeberg.org/thi.ng/umbrella/src/branch/develop/examples/geom-sdf-logo) |
509
+ | <img src="https://codeberg.org/thi.ng/umbrella/media/branch/develop/assets/examples/geom-sdf-path.png" width="240"/> | SVG path to SDF, applying deformation and converting back to SVG | [Demo](https://demo.thi.ng/umbrella/geom-sdf-path/) | [Source](https://codeberg.org/thi.ng/umbrella/src/branch/develop/examples/geom-sdf-path) |
510
+ | <img src="https://codeberg.org/thi.ng/umbrella/media/branch/develop/assets/examples/geom-terrain-viz.jpg" width="240"/> | 2.5D hidden line visualization of digital elevation files (DEM) | [Demo](https://demo.thi.ng/umbrella/geom-terrain-viz/) | [Source](https://codeberg.org/thi.ng/umbrella/src/branch/develop/examples/geom-terrain-viz) |
511
+ | <img src="https://codeberg.org/thi.ng/umbrella/media/branch/develop/assets/geom/tessel.png" width="240"/> | Animated, recursive polygon tessellations | [Demo](https://demo.thi.ng/umbrella/geom-tessel/) | [Source](https://codeberg.org/thi.ng/umbrella/src/branch/develop/examples/geom-tessel) |
512
+ | <img src="https://codeberg.org/thi.ng/umbrella/media/branch/develop/assets/examples/geom-unique-edges.png" width="240"/> | Iterating the unique edges of a tessellation | [Demo](https://demo.thi.ng/umbrella/geom-unique-edges/) | [Source](https://codeberg.org/thi.ng/umbrella/src/branch/develop/examples/geom-unique-edges) |
513
+ | <img src="https://codeberg.org/thi.ng/umbrella/media/branch/develop/assets/examples/geom-voronoi-mst.jpg" width="240"/> | Poisson-disk shape-aware sampling, Voronoi & Minimum Spanning Tree visualization | [Demo](https://demo.thi.ng/umbrella/geom-voronoi-mst/) | [Source](https://codeberg.org/thi.ng/umbrella/src/branch/develop/examples/geom-voronoi-mst) |
514
+ | <img src="https://codeberg.org/thi.ng/umbrella/media/branch/develop/assets/examples/geom-webgl-attrib-pool.jpg" width="240"/> | Augmenting thi.ng/geom shapes for WebGL, using instancing & attribute buffers | [Demo](https://demo.thi.ng/umbrella/geom-webgl-attrib-pool/) | [Source](https://codeberg.org/thi.ng/umbrella/src/branch/develop/examples/geom-webgl-attrib-pool) |
515
+ | <img src="https://codeberg.org/thi.ng/umbrella/media/branch/develop/assets/examples/geom-webgl-basics.jpg" width="240"/> | Converting thi.ng/geom shape types for WebGL | [Demo](https://demo.thi.ng/umbrella/geom-webgl-basics/) | [Source](https://codeberg.org/thi.ng/umbrella/src/branch/develop/examples/geom-webgl-basics) |
516
+ | <img src="https://codeberg.org/thi.ng/umbrella/media/branch/develop/assets/examples/gesture-analysis.png" width="240"/> | Mouse gesture / stroke analysis, simplification, corner detection | [Demo](https://demo.thi.ng/umbrella/gesture-analysis/) | [Source](https://codeberg.org/thi.ng/umbrella/src/branch/develop/examples/gesture-analysis) |
517
+ | <img src="https://codeberg.org/thi.ng/umbrella/media/branch/develop/assets/examples/hdom-canvas-particles.jpg" width="240"/> | 2D Bezier curve-guided particle system | [Demo](https://demo.thi.ng/umbrella/hdom-canvas-particles/) | [Source](https://codeberg.org/thi.ng/umbrella/src/branch/develop/examples/hdom-canvas-particles) |
518
+ | <img src="https://codeberg.org/thi.ng/umbrella/media/branch/develop/assets/examples/hiccup-canvas-arcs.jpg" width="240"/> | Animated arcs & drawing using hiccup-canvas | [Demo](https://demo.thi.ng/umbrella/hiccup-canvas-arcs/) | [Source](https://codeberg.org/thi.ng/umbrella/src/branch/develop/examples/hiccup-canvas-arcs) |
519
+ | <img src="https://codeberg.org/thi.ng/umbrella/media/branch/develop/assets/imgui/imgui-all.png" width="240"/> | Canvas based Immediate Mode GUI components | [Demo](https://demo.thi.ng/umbrella/imgui/) | [Source](https://codeberg.org/thi.ng/umbrella/src/branch/develop/examples/imgui) |
520
+ | <img src="https://codeberg.org/thi.ng/umbrella/media/branch/develop/assets/geom/geom-isoline.png" width="240"/> | Animated sine plasma effect visualized using contour lines | [Demo](https://demo.thi.ng/umbrella/iso-plasma/) | [Source](https://codeberg.org/thi.ng/umbrella/src/branch/develop/examples/iso-plasma) |
521
+ | <img src="https://codeberg.org/thi.ng/umbrella/media/branch/develop/assets/examples/kmeans-viz.jpg" width="240"/> | k-means clustering visualization | [Demo](https://demo.thi.ng/umbrella/kmeans-viz/) | [Source](https://codeberg.org/thi.ng/umbrella/src/branch/develop/examples/kmeans-viz) |
522
+ | <img src="https://codeberg.org/thi.ng/umbrella/media/branch/develop/assets/examples/pointfree-geom.jpg" width="240"/> | Live coding playground for 2D geometry generation using @thi.ng/pointfree-lang | [Demo](https://demo.thi.ng/umbrella/pointfree-geom/) | [Source](https://codeberg.org/thi.ng/umbrella/src/branch/develop/examples/pointfree-geom) |
523
+ | <img src="https://codeberg.org/thi.ng/umbrella/media/branch/develop/assets/poisson/poisson.jpg" width="240"/> | 2D Poisson-disc sampler with procedural gradient map | [Demo](https://demo.thi.ng/umbrella/poisson-circles/) | [Source](https://codeberg.org/thi.ng/umbrella/src/branch/develop/examples/poisson-circles) |
524
+ | <img src="https://codeberg.org/thi.ng/umbrella/media/branch/develop/assets/examples/poly-spline.png" width="240"/> | Polygon to cubic curve conversion & visualization | [Demo](https://demo.thi.ng/umbrella/poly-spline/) | [Source](https://codeberg.org/thi.ng/umbrella/src/branch/develop/examples/poly-spline) |
525
+ | <img src="https://codeberg.org/thi.ng/umbrella/media/branch/develop/assets/examples/poly-subdiv.jpg" width="240"/> | Animated, iterative polygon subdivisions & visualization | [Demo](https://demo.thi.ng/umbrella/poly-subdiv/) | [Source](https://codeberg.org/thi.ng/umbrella/src/branch/develop/examples/poly-subdiv) |
526
+ | <img src="https://codeberg.org/thi.ng/umbrella/media/branch/develop/assets/examples/quasi-lattice.png" width="240"/> | Quasi-random lattice generator | [Demo](https://demo.thi.ng/umbrella/quasi-lattice/) | [Source](https://codeberg.org/thi.ng/umbrella/src/branch/develop/examples/quasi-lattice) |
527
+ | <img src="https://codeberg.org/thi.ng/umbrella/media/branch/develop/assets/examples/rdom-canvas-basics.jpg" width="240"/> | Minimal rdom-canvas animation | [Demo](https://demo.thi.ng/umbrella/rdom-canvas-basics/) | [Source](https://codeberg.org/thi.ng/umbrella/src/branch/develop/examples/rdom-canvas-basics) |
528
+ | <img src="https://codeberg.org/thi.ng/umbrella/media/branch/develop/assets/examples/rotating-voronoi.jpg" width="240"/> | Animated Voronoi diagram, cubic splines & SVG download | [Demo](https://demo.thi.ng/umbrella/rotating-voronoi/) | [Source](https://codeberg.org/thi.ng/umbrella/src/branch/develop/examples/rotating-voronoi) |
529
+ | <img src="https://codeberg.org/thi.ng/umbrella/media/branch/develop/assets/examples/scenegraph.png" width="240"/> | 2D scenegraph & shape picking | [Demo](https://demo.thi.ng/umbrella/scenegraph/) | [Source](https://codeberg.org/thi.ng/umbrella/src/branch/develop/examples/scenegraph) |
530
+ | <img src="https://codeberg.org/thi.ng/umbrella/media/branch/develop/assets/examples/scenegraph-image.png" width="240"/> | 2D scenegraph & image map based geometry manipulation | [Demo](https://demo.thi.ng/umbrella/scenegraph-image/) | [Source](https://codeberg.org/thi.ng/umbrella/src/branch/develop/examples/scenegraph-image) |
531
+ | <img src="https://codeberg.org/thi.ng/umbrella/media/branch/develop/assets/examples/scenegraph-pan-zoom.avif" width="240"/> | Basic 2D scenegraph example with pan/zoom functionality | [Demo](https://demo.thi.ng/umbrella/scenegraph-pan-zoom/) | [Source](https://codeberg.org/thi.ng/umbrella/src/branch/develop/examples/scenegraph-pan-zoom) |
532
+ | <img src="https://codeberg.org/thi.ng/umbrella/media/branch/develop/assets/examples/spline-tangent.png" width="240"/> | Compute cubic spline position & tangent using Dual Numbers | [Demo](https://demo.thi.ng/umbrella/spline-tangent/) | [Source](https://codeberg.org/thi.ng/umbrella/src/branch/develop/examples/spline-tangent) |
533
+ | <img src="https://codeberg.org/thi.ng/umbrella/media/branch/develop/assets/examples/svg-resample.png" width="240"/> | SVG path parsing & dynamic resampling | [Demo](https://demo.thi.ng/umbrella/svg-resample/) | [Source](https://codeberg.org/thi.ng/umbrella/src/branch/develop/examples/svg-resample) |
534
+ | <img src="https://codeberg.org/thi.ng/umbrella/media/branch/develop/assets/examples/text-canvas.png" width="240"/> | 3D wireframe textmode demo | [Demo](https://demo.thi.ng/umbrella/text-canvas/) | [Source](https://codeberg.org/thi.ng/umbrella/src/branch/develop/examples/text-canvas) |
535
+ | <img src="https://codeberg.org/thi.ng/umbrella/media/branch/develop/assets/examples/trace-bitmap.jpg" width="240"/> | Multi-layer vectorization & dithering of bitmap images | [Demo](https://demo.thi.ng/umbrella/trace-bitmap/) | [Source](https://codeberg.org/thi.ng/umbrella/src/branch/develop/examples/trace-bitmap) |
536
+ | <img src="https://codeberg.org/thi.ng/umbrella/media/branch/develop/assets/examples/tsne-colors.avif" width="240"/> | Animated t-SNE visualization of 4D data | [Demo](https://demo.thi.ng/umbrella/tsne-colors/) | [Source](https://codeberg.org/thi.ng/umbrella/src/branch/develop/examples/tsne-colors) |
536
537
 
537
538
  ## API
538
539
 
package/api/ray.d.ts CHANGED
@@ -9,6 +9,6 @@ export declare class Ray implements IHiccupShape2<Ray> {
9
9
  constructor(pos: Vec, dir: Vec, attribs?: Attribs | undefined);
10
10
  copy(): Ray;
11
11
  withAttribs(attribs: Attribs): Ray;
12
- toHiccup(): (string | Attribs | Vec<number> | undefined)[];
12
+ toHiccup(): (string | Vec<number> | Attribs | undefined)[];
13
13
  }
14
14
  //# sourceMappingURL=ray.d.ts.map
package/api/ray3.d.ts CHANGED
@@ -9,6 +9,6 @@ export declare class Ray3 implements IHiccupShape3<Ray3> {
9
9
  constructor(pos: Vec, dir: Vec, attribs?: Attribs | undefined);
10
10
  copy(): Ray3;
11
11
  withAttribs(attribs: Attribs): Ray3;
12
- toHiccup(): (string | Attribs | Vec<number> | undefined)[];
12
+ toHiccup(): (string | Vec<number> | Attribs | undefined)[];
13
13
  }
14
14
  //# sourceMappingURL=ray3.d.ts.map
package/as-cubic.d.ts CHANGED
@@ -46,7 +46,7 @@ export type AsCubicFn = {
46
46
  * - {@link Triangle3}
47
47
  *
48
48
  * Shape types supporting custom conversion options (see
49
- * [@thi.ng/geom-splines](https://github.com/thi-ng/umbrella/tree/develop/packages/geom-splines#cubic-curve-conversion-from-polygons--polylines)
49
+ * [@thi.ng/geom-splines](https://codeberg.org/thi.ng/umbrella/src/branch/develop/packages/geom-splines#cubic-curve-conversion-from-polygons-polylines)
50
50
  * for more details):
51
51
  *
52
52
  * - {@link Group} (only used for eligible children)
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@thi.ng/geom",
3
- "version": "8.3.23",
3
+ "version": "8.3.25",
4
4
  "description": "Functional, polymorphic API for 2D geometry types & SVG generation",
5
5
  "type": "module",
6
6
  "module": "./index.js",
@@ -8,7 +8,7 @@
8
8
  "sideEffects": false,
9
9
  "repository": {
10
10
  "type": "git",
11
- "url": "git+https://github.com/thi-ng/umbrella.git",
11
+ "url": "git+https://codeberg.org/thi.ng/umbrella.git",
12
12
  "directory": "packages/geom"
13
13
  },
14
14
  "homepage": "https://thi.ng/geom",
@@ -41,33 +41,33 @@
41
41
  "tool:tangle": "../../node_modules/.bin/tangle src/**/*.ts"
42
42
  },
43
43
  "dependencies": {
44
- "@thi.ng/adjacency": "^3.0.77",
45
- "@thi.ng/api": "^8.12.17",
46
- "@thi.ng/arrays": "^2.14.13",
47
- "@thi.ng/checks": "^3.8.7",
48
- "@thi.ng/defmulti": "^3.0.94",
49
- "@thi.ng/equiv": "^2.1.106",
50
- "@thi.ng/errors": "^2.6.6",
51
- "@thi.ng/geom-arc": "^2.1.214",
52
- "@thi.ng/geom-clip-line": "^2.3.171",
53
- "@thi.ng/geom-clip-poly": "^2.1.213",
54
- "@thi.ng/geom-closest-point": "^2.1.209",
55
- "@thi.ng/geom-hull": "^2.1.209",
56
- "@thi.ng/geom-isec": "^4.0.81",
57
- "@thi.ng/geom-poly-utils": "^3.1.18",
58
- "@thi.ng/geom-resample": "^3.0.81",
59
- "@thi.ng/geom-splines": "^2.3.81",
60
- "@thi.ng/geom-subdiv-curve": "^3.0.91",
61
- "@thi.ng/geom-tessellate": "^3.0.91",
62
- "@thi.ng/hiccup": "^5.4.1",
63
- "@thi.ng/hiccup-svg": "^5.6.8",
64
- "@thi.ng/math": "^5.15.6",
65
- "@thi.ng/matrices": "^3.0.40",
66
- "@thi.ng/object-utils": "^1.3.9",
67
- "@thi.ng/random": "^4.1.42",
68
- "@thi.ng/strings": "^3.11.0",
69
- "@thi.ng/transducers": "^9.6.30",
70
- "@thi.ng/vectors": "^8.6.25"
44
+ "@thi.ng/adjacency": "^3.0.79",
45
+ "@thi.ng/api": "^8.12.18",
46
+ "@thi.ng/arrays": "^2.14.14",
47
+ "@thi.ng/checks": "^3.8.8",
48
+ "@thi.ng/defmulti": "^3.0.95",
49
+ "@thi.ng/equiv": "^2.1.107",
50
+ "@thi.ng/errors": "^2.6.7",
51
+ "@thi.ng/geom-arc": "^2.1.216",
52
+ "@thi.ng/geom-clip-line": "^2.3.173",
53
+ "@thi.ng/geom-clip-poly": "^2.1.215",
54
+ "@thi.ng/geom-closest-point": "^2.1.211",
55
+ "@thi.ng/geom-hull": "^2.1.211",
56
+ "@thi.ng/geom-isec": "^4.0.83",
57
+ "@thi.ng/geom-poly-utils": "^3.1.20",
58
+ "@thi.ng/geom-resample": "^3.0.83",
59
+ "@thi.ng/geom-splines": "^2.3.83",
60
+ "@thi.ng/geom-subdiv-curve": "^3.0.93",
61
+ "@thi.ng/geom-tessellate": "^3.0.93",
62
+ "@thi.ng/hiccup": "^5.4.3",
63
+ "@thi.ng/hiccup-svg": "^5.6.10",
64
+ "@thi.ng/math": "^5.15.7",
65
+ "@thi.ng/matrices": "^3.0.42",
66
+ "@thi.ng/object-utils": "^1.3.10",
67
+ "@thi.ng/random": "^4.1.43",
68
+ "@thi.ng/strings": "^3.12.0",
69
+ "@thi.ng/transducers": "^9.6.31",
70
+ "@thi.ng/vectors": "^8.6.27"
71
71
  },
72
72
  "devDependencies": {
73
73
  "esbuild": "^0.27.2",
@@ -534,5 +534,5 @@
534
534
  "tag": "geometry",
535
535
  "year": 2013
536
536
  },
537
- "gitHead": "d46ec975b426bb2ceb137cab734395c97436d59b\n"
537
+ "gitHead": "929fb6590178a41cbb77cbb87e07c59c61381607\n"
538
538
  }