hyp-geom
v1.2.0
Published
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.
Readme
hyp-geom
A TypeScript library for working with hyperbolic geometry. This package provides geometric tools for the upper half plane model of the hyperbolic plane.
Installation
npm install hyp-geomor with yarn:
yarn add hyp-geomFeatures
- 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)
Planned Features
- 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
Quick Start
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.
Documentation
- API Reference: Method signatures and usage
- Mathematical Background (PDF): Derivations and theory
Examples
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
Contributing
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.
License
MIT © Nathan Lopez
