Udaya Lagna: Calculator
<!-- Astronomical library for precise planetary positions --> <script src="https://cdn.jsdelivr.net/npm/astronomia@4.0.2/astronomia.min.js"></script> <script> // Wait for library + DOM window.addEventListener('DOMContentLoaded', () => // Helper: Geocode city using OpenStreetMap Nominatim (free, no key) async function geocodeCity(city) if (!city.trim()) return null; try const resp = await fetch( https://nominatim.openstreetmap.org/search?q=$encodeURIComponent(city)&format=json&limit=1 ); const data = await resp.json(); if (data && data.length) return lat: parseFloat(data[0].lat), lon: parseFloat(data[0].lon) ;
catch(e) console.warn(e); return null;
function getSignAndDegree(siderealDeg) let signIndex = Math.floor(siderealDeg / 30); let degInSign = siderealDeg - (signIndex * 30); return sign: zodiacSigns[signIndex], deg: degInSign.toFixed(2), lord: lords[signIndex] ; Udaya Lagna Calculator
// Zodiac sign name from 0° Aries (0 = Aries ... 11 = Pisces) const zodiacSigns = [ "Mesha (Aries)", "Vrishabha (Taurus)", "Mithuna (Gemini)", "Karka (Cancer)", "Simha (Leo)", "Kanya (Virgo)", "Tula (Libra)", "Vrishchika (Scorpio)", "Dhanu (Sagittarius)", "Makara (Capricorn)", "Kumbha (Aquarius)", "Meena (Pisces)" ]; const lords = ["Mars", "Venus", "Mercury", "Moon", "Sun", "Mercury", "Venus", "Mars", "Jupiter", "Saturn", "Saturn", "Jupiter"]; // Lahiri Ayanamsha for given JD
This is an excellent request, as (also known as the Rising Sign or Ascendant ) is the most fundamental pillar of Vedic astrology (Jyotish). We'll compute directly with function
// initial load demo for Mumbai (async () => const initCity = cityInput.value; const coords = await geocodeCity(initCity); if(coords) currentCoords = coords; latField.value = coords.lat.toFixed(4); lonField.value = coords.lon.toFixed(4); )();
// Sidereal zodiac boundaries (Nirayana) - tropical sign boundaries minus ayanamsha. // Lahiri Ayanamsha for given JD. function getLahiriAyanamsha(jd) // Approx formula: 23° 26' 21.406" - t/76 ? Actually use astronomia's built-in precise calculation // astronomia has ayanamsha for sidereal positions. We'll compute directly with function. // Use astronomia's siderealTime? Better: compute tropical ascendant then subtract ayanamsha. const obliquity = astronomia.obliquity(jd); // Mean Ayanamsha formula by IAU 1976 / Lahiri: ~ 23° 26' 21.406" – (precession) but for simple we use astronomia's precession // However, astronomia's ayanamsha is not directly exposed but we can compute using mean longitude of sun - sidereal sun? Let's use built-in: // astronomia.ayanamsha() is not in this bundle, but we use: // modern lahiri = 23° 26' 21.406" - ( (JD - 2451545)/36525 * 50.290966 )/3600 approx. // More accurate: use precise precession from astronomia. const t = (jd - 2451545) / 36525; // Julian centuries since J2000 const precessionRateArcsec = 50.290966; // arcsec/year? Actually per century: 5029.0966 arcsec? no, 50.290966 arcsec/year. Let's do per tropical century: const precessionPerCenturyDeg = (5029.0966) / 3600; // in degrees per Julian century let ayan = precessionPerCenturyDeg * t; // base offset at J2000 = 23° 51' 21.406"?? No, correct Lahiri at J2000 is about 23.856° approx // We'll use standard known value: Lahiri ayanamsha for J2000 = 23° 51' 21.406" = 23.855946° const ayanJ2000 = 23.855946; let ayanamshaDeg = ayanJ2000 + precessionPerCenturyDeg * t; // but more stable: ensure we return degrees. return (ayanamshaDeg + 360) % 360;
