Skip to content

Latest commit

 

History

History
 
 

geom-splines

Folders and files

NameName
Last commit message
Last commit date

parent directory

..
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

@thi.ng/geom-splines

npm version npm downloads Mastodon Follow

Note

This is one of 199 standalone projects, maintained as part of the @thi.ng/umbrella monorepo and anti-framework.

🚀 Please help me to work full-time on these projects by sponsoring me on GitHub. Thank you! ❤️

About

nD cubic & quadratic curve analysis, conversion, interpolation, splitting. This is a support package for @thi.ng/geom.

Current implementations partially based on toxiclibs (Java) and Clojure version of thi.ng/geom.

Status

STABLE - used in production

Search or submit any issues for this package

Related packages

Installation

yarn add @thi.ng/geom-splines

ESM import:

import * as gs from "@thi.ng/geom-splines";

Browser ESM import:

<script type="module" src="https://esm.run/@thi.ng/geom-splines"></script>

JSDelivr documentation

For Node.js REPL:

const gs = await import("@thi.ng/geom-splines");

Package sizes (brotli'd, pre-treeshake): ESM: 2.79 KB

Dependencies

Note: @thi.ng/api is in most cases a type-only import (not used at runtime)

Usage examples

One project in this repo's /examples directory is using this package:

Screenshot Description Live demo Source
Polygon to cubic curve conversion & visualization Demo Source

API

Generated API docs

Cubic curve conversion from polygons & polylines

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.

Poly vertices as control points

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

Poly vertices as break points

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

Authors

If this project contributes to an academic publication, please cite it as:

@misc{thing-geom-splines,
  title = "@thi.ng/geom-splines",
  author = "Karsten Schmidt",
  note = "https://thi.ng/geom-splines",
  year = 2016
}

License

© 2016 - 2024 Karsten Schmidt // Apache License 2.0