Udaya Lagna Calculator -
);
</style> </head> <body> <div class="card"> <div class="header"> <h1>🌅 Udaya Lagna</h1> <p>Rising Sign Calculator • Vedic Astrology (Nirayana)</p> </div> <div class="content"> <div class="row-2col"> <div class="input-group"> <label>📅 Date of Birth</label> <input type="date" id="birthDate" value="1990-04-15"> </div> <div class="input-group"> <label>⏰ Time (Local)</label> <input type="time" id="birthTime" value="10:30"> </div> </div> <div class="input-group"> <label>📍 Place of Birth (City)</label> <input type="text" id="cityName" placeholder="e.g., New York, London, Mumbai" value="Mumbai"> </div> <div class="row-2col"> <div class="input-group"> <label>🌐 Latitude</label> <input type="text" id="lat" placeholder="Auto from city" readonly style="background:#f3ede4;"> </div> <div class="input-group"> <label>🌐 Longitude</label> <input type="text" id="lon" placeholder="Auto from city" readonly style="background:#f3ede4;"> </div> </div> <button id="calcBtn">✨ Calculate Udaya Lagna ✨</button> <div id="resultArea" class="result" style="display: none;"> <h3>🌞 Ascendant (Udaya Lagna)</h3> <div class="lagna-data"> <div class="data-item"><div class="data-label">Rising Sign</div><div class="data-value" id="resSign">—</div></div> <div class="data-item"><div class="data-label">Degree (Nirayana)</div><div class="data-value" id="resDeg">—</div></div> <div class="data-item"><div class="data-label">Nakshatra (Pada)</div><div class="data-value" id="resNak">—</div></div> <div class="data-item"><div class="data-label">Lagna Lord</div><div class="data-value" id="resLord">—</div></div> </div> <div class="note">⚡ Sidereal (Nirayana) using Lahiri Ayanamsha. Accurate for modern dates.</div> </div> </div> <footer>Udaya means "rising" — your first breath's eastern horizon</footer> Udaya Lagna Calculator
input, select background: #fffcf5; border: 1.5px solid #decb9c; border-radius: 40px; padding: 12px 18px; font-size: 1rem; color: #2c1c10; transition: 0.2s; outline: none; // Use astronomia's siderealTime
function getNakshatra(siderealDeg) // 27 Nakshatra each 13°20' = 13.3333333° const nakshatras = [ "Ashwini", "Bharani", "Krittika", "Rohini", "Mrigashira", "Ardra", "Punarvasu", "Pushya", "Ashlesha", "Magha", "Purva Phalguni", "Uttara Phalguni", "Hasta", "Chitra", "Swati", "Vishakha", "Anuradha", "Jyeshtha", "Mula", "Purva Ashadha", "Uttara Ashadha", "Shravana", "Dhanishtha", "Shatabhisha", "Purva Bhadrapada", "Uttara Bhadrapada", "Reverti" ]; let nakshatraLen = 360 / 27; // 13.3333333 let idx = Math.floor(siderealDeg / nakshatraLen); let startDeg = idx * nakshatraLen; let pada = Math.floor(((siderealDeg - startDeg) / (nakshatraLen / 4))) + 1; return `$nakshatras[idx] (Pada $pada)`; .result margin-top: 2rem
// 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;
.result margin-top: 2rem; background: #fff0e0; border-radius: 32px; padding: 1.2rem 1.5rem; border-left: 6px solid #c4813b; box-shadow: inset 0 1px 4px #0001, 0 5px 12px rgba(0,0,0,0.05);