Skip to content
Documentation · all sections

Birth Charts

panchang-ts · v5.0.0 · MIT

Planetary positions, Lagna, Bhava under three house systems, D1 and six divisional charts, and planetary dignity.

Planetary positions

import { computePlanetaryPositions, GRAHA_ABBR } from 'panchang-ts';

const g = computePlanetaryPositions(new Date(), 'lahiri');
g.jupiter.rashi.name;       // "Dhanu"
g.jupiter.degreeInRashi;    // 18.42
g.jupiter.nakshatra.name;   // "Purva Ashadha"
g.jupiter.nakshatra.pada;   // 3
g.saturn.isRetrograde;
GRAHA_ABBR['Jupiter'];      // "Ju"

// True node (sharper Rahu/Ketu via Meeus periodic correction)
const gT = computePlanetaryPositions(new Date(), 'lahiri', undefined, 'true');

All nine grahas, sidereal, each a GrahaPosition with rashi, nakshatra + pada, and retrograde flag. isRetrograde is always false for Sun/Moon and always true for Rahu/Ketu. The node model defaults to mean; pass 'true' for the true node.

Lagna and Bhava

import { computeLagna, computeBhava } from 'panchang-ts';

const birth = new Date('1995-08-15T05:30:00Z');
const loc   = { latitude: 28.6139, longitude: 77.2090 };

const lagna = computeLagna(birth, loc, 'lahiri', 'en');

// Bhava — 'whole-sign' (default) | 'equal' | 'placidus-kp'.
// Placidus-KP throws PanchangError('CIRCUMPOLAR') beyond ±66.5°.
const houses = computeBhava(birth, loc, { houseSystem: 'whole-sign' });

Rashi chart and divisional charts

import {
  computeRashiChart, computeNavamsa, computeDivisionalChart, computeDignity,
} from 'panchang-ts';

// `chart.planets` is the ordered list; `chart.byPlanet` is the same nine
// placements keyed by graha, for direct lookup without a linear scan.
const chart = computeRashiChart(birth, loc);
chart.byPlanet.Mars.house;        // instead of chart.planets.find(...)!
chart.planets.map(p => p.rashi);  // iterate the list as before

// D1 — full Rashi chart with 9-graha house placement.
const d1 = computeRashiChart(birth, loc, { houseSystem: 'whole-sign' });
d1.planets.find(p => p.planet === 'Jupiter')?.house;
d1.planets.find(p => p.planet === 'Saturn')?.isRetrograde;

// Divisional charts (D2 Hora, D3 Drekkana, D7 Saptamsa, D9 Navamsa,
// D10 Dasamsa, D12 Dwadasamsa, D30 Trimsamsa).
const d9  = computeNavamsa(birth, loc);
const d10 = computeDivisionalChart(birth, loc, 'D10');
const d30 = computeDivisionalChart(birth, loc, 'D30');

// Planetary dignity (BPHS Ch. 3–4).
computeDignity('Mars', 0);   // 'moolatrikona' (Aries)
computeDignity('Mars', 9);   // 'exalted' (Capricorn)
computeDignity('Sun',  6);   // 'debilitated' (Libra)

Every chart helper returns the same BirthChart shape — lagna, bhava, planets, byPlanet — so downstream helpers (Shadbala, Ashtakavarga, yogas, doshas, Arudhas, Argala) all accept a d1 from computeRashiChart.

OptionValuesDefault
houseSystem'whole-sign' · 'equal' · 'placidus-kp''whole-sign'
ayanamsaall five — 'lahiri', 'raman', 'krishnamurti', 'true-chitra', 'thirukanitham''lahiri'
language'en' · 'hi''en'