path-tangents
v4.2.0
Published
Compute tangents for a path of 3D points.
Readme
path-tangents
Compute tangents for a path of 3D points.
Installation
npm install path-tangentsUsage
import pathTangents from "path-tangents";
// const path = ...
const tangents = pathTangents(path, { closed: true, method: "chordal" });API
Modules
Typedefs
path-tangents
pathTangents(path, [options]) ⇒ Tangents ⏏
Compute tangents for a path of 3D points.
Kind: Exported function
| Param | Type | Default | Description | | --------- | -------------------------------- | --------------- | -------------------------------------- | | path | Path | | Simplicial complex geometry positions. | | [options] | Options | {} | |
utils
- utils
- .SPACINGS : Record.<("uniform"|"centripetal"|"chordal"), Spacing>
- .setDelta(out, i, points, from, to)
- .parabolaMiddleTangent(out, i, deltas, a, b)
- .parabolaEndTangent(out, i, deltas, a, b)
- .computeNeighbours(points, size, closed) ⇒ Neighbours
- .forwardTangent(out, points, neighbours, i)
- .parabolaTangent(out, points, neighbours, i, spacing)
utils.SPACINGS : Record.<("uniform"|"centripetal"|"chordal"), Spacing>
Parameter spacing functions of the parabola methods.
Kind: static constant of utils
utils.setDelta(out, i, points, from, to)
Set out[i] to the delta from points[from] to points[to].
Kind: static method of utils
| Param | Type | Description | | ------ | ---------------------------------------------------------------------------- | ------------ | | out | module:pex-math~TypedArray | Array.<number> | | | i | number | | | points | module:pex-math~TypedArray | Array.<number> | Flat points. | | from | number | | | to | number | |
utils.parabolaMiddleTangent(out, i, deltas, a, b)
Set out[i] to the derivative at x₁ of the parabola through x₀, x₁, x₂.
Kind: static method of utils
| Param | Type | Description | | ------ | ---------------------------------------------------------------------------- | ---------------------------- | | out | module:pex-math~TypedArray | Array.<number> | | | i | number | | | deltas | module:pex-math~TypedArray | Flat deltas x₀→x₁ and x₁→x₂. | | a | number | Spacing of x₀→x₁. | | b | number | Spacing of x₁→x₂. |
utils.parabolaEndTangent(out, i, deltas, a, b)
Set out[i] to the derivative at x₀ of the parabola through x₀, x₁, x₂.
Kind: static method of utils
| Param | Type | Description | | ------ | ---------------------------------------------------------------------------- | ---------------------------- | | out | module:pex-math~TypedArray | Array.<number> | | | i | number | | | deltas | module:pex-math~TypedArray | Flat deltas x₀→x₁ and x₁→x₂. | | a | number | Spacing of x₀→x₁. | | b | number | Spacing of x₁→x₂. |
utils.computeNeighbours(points, size, closed) ⇒ Neighbours
Compute the previous and next distinct point of each point, -1 when there is none.
Kind: static method of utils
| Param | Type | Description | | ------ | ---------------------------------------------------------------------------- | ----------------- | | points | module:pex-math~TypedArray | Array.<number> | Flat points. | | size | number | Number of points. | | closed | boolean | |
utils.forwardTangent(out, points, neighbours, i)
Set out[i] to the direction of the segment starting at point i, or ending
there for the last point of open paths.
Kind: static method of utils
| Param | Type | Description | | ---------- | ---------------------------------------------------------------------------- | ------------ | | out | module:pex-math~TypedArray | Array.<number> | | | points | module:pex-math~TypedArray | Array.<number> | Flat points. | | neighbours | Neighbours | | | i | number | |
utils.parabolaTangent(out, points, neighbours, i, spacing)
Set out[i] to the derivative at point i of the parabola through it and
its two neighbours.
Kind: static method of utils
| Param | Type | Description | | ---------- | ---------------------------------------------------------------------------- | ------------ | | out | module:pex-math~TypedArray | Array.<number> | | | points | module:pex-math~TypedArray | Array.<number> | Flat points. | | neighbours | Neighbours | | | i | number | | | spacing | Spacing | |
Path : module:pex-math~TypedArray | Array.<number> | Array.<module:pex-math~Vec3>
3D points, flat (eg. new Float32Array([x, y, z, x, y, z, ...])/new Array(x,
y, z, x, y, z, ...)) or nested (eg. new Array([x, y, z], [x, y, z],
...)).
Kind: global typedef
Tangents : Float32Array | Float64Array | Array.<module:pex-math~Vec3>
Unit tangents in the layout of the path: a Float64Array for Float64Array paths, a Float32Array for other flat paths, nested arrays for nested paths.
Kind: global typedef
Neighbours : object
Previous and next distinct point of each point, -1 when there is none.
Kind: global typedef Properties
| Name | Type | | ---- | ----------------------- | | prev | Int32Array | | next | Int32Array |
Spacing ⇒ number
Kind: global typedef
| Param | Type | Description | | ------ | --------------------------------------- | --------------------------- | | deltas | module:pex-math~TypedArray | Flat deltas between points. | | i | number | Index of the delta. |
Method : "forward" | "uniform" | "centripetal" | "chordal"
Kind: global typedef
Options : object
Options for tangents computation. All optional.
Kind: global typedef Properties
| Name | Type | Default | Description | | -------- | ------------------------------ | -------------------------------- | ---------------------------------------------------------------------------------------------------- | | [closed] | boolean | false | Specify if the path is closed. If so the last point connects back to the first one. | | [method] | Method | "chordal" | Tangent estimation method: - "forward": direction of the segment starting at each point. - "uniform" | "centripetal" | "chordal": derivative of the parabola through each point and its two neighbours, parametrised like Catmull-Rom splines. "uniform" assumes evenly spaced points, "chordal" follows segment lengths and handles uneven spacing best, "centripetal" sits in between and gives the corner bisector on polylines. |
License
MIT. See license file.

