npm package discovery and stats viewer.

Discover Tips

  • General search

    [free text search, go nuts!]

  • Package details

    pkg:[package-name]

  • User packages

    @[username]

Sponsor

Optimize Toolset

I’ve always been into building performant and accessible sites, but lately I’ve been taking it extremely seriously. So much so that I’ve been building a tool to help me optimize and monitor the sites that I build to make sure that I’m making an attempt to offer the best experience to those who visit them. If you’re into performant, accessible and SEO friendly sites, you might like it too! You can check it out at Optimize Toolset.

About

Hi, 👋, I’m Ryan Hefner  and I built this site for me, and you! The goal of this site was to provide an easy way for me to check the stats on my npm packages, both for prioritizing issues and updates, and to give me a little kick in the pants to keep up on stuff.

As I was building it, I realized that I was actually using the tool to build the tool, and figured I might as well put this out there and hopefully others will find it to be a fast and useful way to search and browse npm packages as I have.

If you’re interested in other things I’m working on, follow me on Twitter or check out the open source projects I’ve been publishing on GitHub.

I am also working on a Twitter bot for this site to tweet the most popular, newest, random packages from npm. Please follow that account now and it will start sending out packages soon–ish.

Open Software & Tools

This site wouldn’t be possible without the immense generosity and tireless efforts from the people who make contributions to the world and share their work via open source initiatives. Thank you 🙏

© 2026 – Pkg Stats / Ryan Hefner

path-tangents

v4.2.0

Published

Compute tangents for a path of 3D points.

Readme

path-tangents

npm version stability-stable npm minzipped size dependencies types Conventional Commits styled with prettier linted with eslint license

Compute tangents for a path of 3D points.

paypal coinbase twitter

path-tangents screenshot

Installation

npm install path-tangents

Usage

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>

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.