qibla/README.md
Aric Camarata 1cbfa04acf
Some checks failed
CI / Test (Node 20) (push) Failing after 34s
CI / Test (Node 22) (push) Failing after 35s
CI / Test (Node 24) (push) Failing after 26s
CI / Lint & Format (push) Failing after 27s
CI / Typecheck (push) Failing after 25s
CI / Pack Check (push) Failing after 31s
CI / Coverage (push) Failing after 3s
add opt-in anonymous telemetry (#1)
* add opt-in telemetry via @acamarata/telemetry (off by default)

* chore: update lockfile for @acamarata/telemetry devDep

* chore: fix prettier formatting on telemetry import
2026-06-30 15:56:57 -04:00

2.1 KiB

@acamarata/qibla

npm version CI License: MIT Wiki

Qibla direction, great-circle path, and haversine distance. Pure math, zero dependencies.

Installation

npm install @acamarata/qibla

Quick Start

import { qiblaAngle, compassDir, distanceKm, KAABA_LAT, KAABA_LNG } from '@acamarata/qibla';

// Bearing from New York to the Ka'bah
const bearing = qiblaAngle(40.7128, -74.006);
console.log(bearing);          // ~58.48 degrees
console.log(compassDir(bearing)); // "NE"

// Distance in kilometers
const km = distanceKm(40.7128, -74.006, KAABA_LAT, KAABA_LNG);
console.log(km); // ~9,634

CommonJS:

const { qiblaAngle } = require('@acamarata/qibla');

Use qiblaGreatCircle(lat, lng, steps?) to generate waypoints along the great-circle path for map overlays.

TypeScript

import { qiblaAngle, CompassAbbr, CompassName } from '@acamarata/qibla';

Documentation

Full API reference, algorithm design, and spherical trigonometry notes: GitHub Wiki

Acknowledgments

Ka'bah coordinates verified against published GPS surveys and cross-checked with satellite imagery. Forward azimuth formula follows standard spherical trigonometry as used in aviation and geodesy.

Telemetry

This package supports opt-in anonymous usage telemetry — off by default. Enable: ACAMARATA_TELEMETRY=1. See TELEMETRY.md for what is sent and how to disable.

License

MIT