A TypeScript library for working with hyperbolic geometry. This package provides geometric tools for the [upper half plane model](https://en.wikipedia.org/wiki/Poincar%C3%A9_half-plane_model) of the hyperbolic plane.
npm install hyp-geomA TypeScript library for working with hyperbolic geometry. This package provides geometric tools for the upper half plane model of the hyperbolic plane.


---
``bash`
npm install hyp-geom
or with yarn:
`bash`
yarn add hyp-geom
---
- Distance and angle calculations
- Formulas and information for curves/shapes including geodesics (lines), circles, horocycles, and polygons
- Hyperbolic isometries as Möbius transformations, either by specifying the coordinates of the corresponding matrix or by choosing from one of the three types (hyperbolic, elliptic, or parabolic)
---
- Angle measure at intersection point of curves
- Support for additional models including the Poincare Disk model, the Bertrami-Klein model, and the Hyperboloid model
- Drawings and animations, e.g., the action of an isometry on a model
- Support for fundamental domains, ultimately leading to 3d interactions with hyperbolic surfaces
---
`ts
import { UhpIsometry } from "hyp-geom";
const uhp = new UpperHalfPlane();
const center = [0, 1];
const radius = 1;
const circle = uhp.circle(center, radius);
console.log(circle);
// {
// center: { re: 0, im: 1 },
// radius: 1,
// eucCenter: { re: 0, im: cosh(1) },
// eucRadius: sinh(1)
// }
``
See examples for more usage demonstrations.
---
- API Reference: Method signatures and usage
- Mathematical Background (PDF): Derivations and theory
---
The examples folder contains runnable TypeScript snippets showing:
- Computing distances and angles
- Working with hyperbolic curves (geodesics, circles, etc.)
- Basic translations, rotations, and reflections
- Applying isometries to points
- Classifying isometries
---
Contributions, issues, and feature requests are welcome! If you’d like to add functionality, improve docs, or suggest enhancements, please open an issue or submit a pull request.
See CONTRIBUTING.md for guidelines.
---
MIT © Nathan Lopez