This project is part of the @thi.ng/umbrella monorepo.
nD cubic & quadratic curve analysis, conversion, interpolation, splitting.
Current implementations partially based on toxiclibs (Java) and Clojure version of thi.ng/geom.
STABLE - used in production
yarn add @thi.ng/geom-splines
// ES module
<script type="module" src="https://unpkg.com/@thi.ng/geom-splines?module" crossorigin></script>
// UMD
<script src="https://unpkg.com/@thi.ng/geom-splines/lib/index.umd.js" crossorigin></script>
Package sizes (gzipped, pre-treeshake): ESM: 2.17 KB / CJS: 2.30 KB / UMD: 2.27 KB
- @thi.ng/api
- @thi.ng/checks
- @thi.ng/geom-api
- @thi.ng/geom-arc
- @thi.ng/geom-resample
- @thi.ng/math
- @thi.ng/vectors
Several demos in this repo's /examples directory are using this package.
A selection:
Screenshot | Description | Live demo | Source |
---|---|---|---|
Polygon to cubic curve conversion & visualization | Demo | Source |
Currently, there're two ways to convert a polygon/polyline into a sequence of cubic curve segments. Both modes support customizable curve tightness.
Furthermore, both conversion modes can be instructed to use uniformly scaled control point tangents: In uniform mode, the tangents have a uniform, user defined length, resulting in equidistant control points for each poly vertex. In non-uniform mode, each tangent is scaled by the length of its parent poly edge.
In this mode the curve always goes through the midpoints each polygon edge, with the original polygon vertices being used to compute control points.
Proportional tangent scale | Uniform tangent scale |
---|---|
In this mode the curve always goes through the original polygon vertices and additional control points are created via symmetric tangents at each poly vertex. The tangents themselves are computed via the bisector of each vertex corner, taking into the convexity of each poly vertex.
Proportional tangent scale | Uniform tangent scale |
---|---|
Karsten Schmidt
© 2016 - 2020 Karsten Schmidt // Apache Software License 2.0