Sidereal time হলো clock-এর বিকল্প civil time নয়; এটি Earth-এর orientation বোঝানোর একটি angular time। Local meridian কোন right ascension-এর দিকে মুখ করে আছে তা sidereal time জানায়। সেই meridian, observer-এর latitude এবং ecliptic-এর obliquity থেকে horizon–ecliptic intersection বের করলে Ascendant বা Lagna পাওয়া যায়।
Lagna বা Ascendant কী?
জ্যোতির্বৈজ্ঞানিকভাবে Ascendant হলো নির্দিষ্ট সময় ও স্থানে পূর্ব দিগন্তের সঙ্গে ecliptic-এর যে intersection তখন উঠছে। বিপরীত intersection Descendant। জন্মকুণ্ডলী, দৈনিক পঞ্জিকা এবং লগ্নান্ত সময়ে Ascendant-এর ecliptic longitude-কে রাশি ও degree-এ প্রকাশ করা হয়।
এখানে তিনটি আলাদা circle কাজ করে:
- Celestial equator—Earth-এর equator-এর আকাশে projection;
- Ecliptic—সূর্যের apparent annual path-এর plane;
- Horizon—observer-এর zenith-এর perpendicular local plane।
Earth-এর axial tilt-এর কারণে ecliptic ও equator এক নয়; observer-এর latitude-এর কারণে horizon ও equator-এর orientation-ও বদলায়। তাই ১২ রাশি প্রতিদিন সমান দুই ঘণ্টা করে ওঠে না।
| Quantity | কী বোঝায় | কোন input গুরুত্বপূর্ণ |
|---|---|---|
| Sidereal time | Meridian-এর celestial rotation angle | UT1, date, longitude |
| Midheaven/MC | Local meridian ও ecliptic-এর upper intersection | Sidereal angle, obliquity |
| Ascendant/Lagna | Eastern horizon ও ecliptic-এর rising intersection | Sidereal angle, latitude, obliquity |
| Nirayana Lagna | Sidereal zodiac-এ Ascendant longitude | Tropical Lagna + declared ayanamsa |
Lagna কি eastern azimuth?
না। Ascendant একটি ecliptic longitude। এটি horizon-এর পূর্ব intersection-এ থাকে, কিন্তু তার azimuth সবসময় ঠিক 90° নাও হতে পারে—“east” এখানে eastern half of horizon বোঝায়। Ecliptic-এর tilt ও latitude-এর কারণে rising point উত্তর-পূর্ব বা দক্ষিণ-পূর্ব দিকে থাকতে পারে।
প্রথম ধাপ: Civil date/time থেকে UTC ও UT1
User সাধারণত city, local date এবং clock time দেন। প্রথমে location-এর historical time-zone rule দিয়ে local time-কে UTC-তে রূপান্তর করতে হয়। New York-এর জন্য DST active কি না, Kolkata/Dhaka-র historical offset কী ছিল এবং ambiguous/nonexistent local time কীভাবে handle হবে—এসব calendar layer-এর প্রশ্ন।
UTC = Local civil time − applicable UTC offset
UT1 = UTC + DUT1
TT = UTC + leap-second relation + 32.184 seconds
Earth rotation angle-এর জন্য UT1 দরকার। Nutation, precession ও obliquity model সাধারণত TT-ভিত্তিক argument ব্যবহার করে। তাই একটি single DateTime দিয়ে সব library function চালালে hidden time-scale error হতে পারে।
UT1 বনাম UTC
UTC atomic seconds ও leap second-নিয়ন্ত্রিত civil scale; UT1 observed Earth rotation-এর সঙ্গে সম্পর্কিত। Modern date-এ DUT1 ছোট হলেও high-precision Lagna বা house cusp-এ measurable difference হতে পারে। Historical period-এ Earth rotation uncertainty আরও বড়।
Earth Rotation Angle—পৃথিবী কতখানি ঘুরেছে?
Modern astronomy-তে Earth Rotation Angle বা ERA, UT1-এর linear function হিসেবে celestial এবং terrestrial reference system-এর rotation সম্পর্কিত করে। এটি equinox-নির্ভর পুরোনো sidereal-time ভাষা থেকে conceptually পরিষ্কার: Earth-এর rotation আলাদা, precession–nutation frame transformation আলাদা।
IAU 2000 framework-এ ERA একটি reference-origin থেকে Earth-এর rotation angle। GAST-এর সঙ্গে equation of origins-এর সম্পর্ক ব্যবহার করে equinox-based apparent sidereal time পাওয়া যায়। Application developer সরাসরি approximate formula না লিখে SOFA/NOVAS-এর tested routines ব্যবহার করলে model consistency ভালো থাকে।
Sidereal day solar day-এর চেয়ে ছোট কেন?
Earth একবার stars-এর তুলনায় ঘুরে আসার পরও Sun-কে একই meridian-এ আনতে orbit বরাবর সামান্য আরও ঘুরতে হয়। তাই mean sidereal day প্রায় 23 ঘণ্টা 56 মিনিট solar time; প্রতিদিন একই civil time-এ stars প্রায় চার মিনিট আগে meridian-এ আসে।
GMST ও GAST
USNO অনুসারে sidereal time হলো vernal equinox-এর hour angle। Mean equinox ব্যবহার করলে mean sidereal time; true equinox ব্যবহার করলে apparent sidereal time। Greenwich meridian-এ এগুলো:
- GMST—Greenwich Mean Sidereal Time;
- GAST—Greenwich Apparent Sidereal Time।
GAST = GMST + equation of the equinoxes
equation of the equinoxes ≈ nutation in longitude × cos(obliquity)
এটি simplified conceptual expression। Production-grade calculation-এ selected IAU model অনুযায়ী complementary terms ও consistent TT/UT1 inputs ব্যবহার করা উচিত।
Mean না apparent—কোনটি Lagna-তে?
দুটিই দিয়ে consistent system তৈরি করা যায়, কিন্তু mix করা যায় না:
- True equator/equinox ও true obliquity ব্যবহার করলে apparent sidereal chain নিন;
- Mean equator/equinox ও mean obliquity ব্যবহার করলে mean sidereal chain নিন;
- GAST-এর সঙ্গে nutation আবার যোগ করবেন না;
- GMST-এর সঙ্গে true-of-date coordinate মেশালে equation-of-equinoxes mismatch হতে পারে।
Greenwich থেকে Local Sidereal Time
Greenwich sidereal time-এ observer-এর east-positive longitude যোগ করলে local sidereal time পাওয়া যায়। USNO-র প্রকাশিত সম্পর্ক:
Local sidereal hours = Greenwich sidereal hours + longitude degrees ÷ 15
Normalize result to 0–24 hours
ARMC degrees = Local sidereal hours × 15
ARMC অর্থ Right Ascension of the Meridian বা local meridian-এর right ascension, degree-এ। House ও Lagna calculation library প্রায়ই এই value ব্যবহার করে।
Latitude কেন এখানে নেই?
Sidereal time একই longitude-এর সব স্থানে একই। USNO-ও স্পষ্টভাবে জানায় যে sidereal-time calculation-এ latitude ব্যবহৃত হয় না। Latitude পরের horizon-geometry ধাপে লাগে।
Longitude sign-এর common error
অনেক database west longitude negative রাখে; কিছু পুরোনো astronomical বা astrological code west-positive convention ব্যবহার করে। Swiss Ephemeris-এর documented functions east-positive, west-negative। Sign উল্টো হলে Lagna কয়েক ঘণ্টা সরতে পারে—এটি সামান্য rounding error নয়।
Local meridian থেকে eastern horizon intersection
Local sidereal angle পাওয়ার পরে celestial equator-এর orientation জানা যায়। কিন্তু Lagna পেতে আরও দুটি geometry input লাগে:
- Geographic latitude (φ)—horizon-এর tilt নির্ধারণ করে;
- Obliquity of ecliptic (ε)—ecliptic ও equator-এর tilt নির্ধারণ করে।
এরপর equatorial/ecliptic rotation matrix এবং local east–north–up basis ব্যবহার করে ecliptic great circle ও horizon plane-এর দুটি intersection বের করা যায়। যে intersection eastern half-এ এবং rising direction-এ, সেটিই Ascendant। অন্যটি Descendant।
Step 1: local meridian angle = ARMC
Step 2: construct horizon normal from latitude and ARMC
Step 3: intersect horizon plane with ecliptic plane
Step 4: choose eastern/rising intersection
Step 5: convert vector to normalized tropical ecliptic longitude
Vector method quadrant-safe এবং pole/high-latitude cases-এ একটি single tangent formula-এর তুলনায় robust। যদি closed-form formula ব্যবহার করেন, atan2(y, x) দিয়ে correct quadrant নিন; plain atan(y/x) 180° ভুল দিতে পারে।
Latitude Lagna-কে কীভাবে বদলায়?
Equator-এর কাছে রাশিগুলোর rising duration তুলনামূলক সমান। মধ্য ও উচ্চ latitude-এ ecliptic horizon-কে ভিন্ন angle-এ কাটে; কিছু signs দ্রুত এবং কিছু signs ধীরে ওঠে। তাই প্রতিটি রাশির জন্য fixed 120 minutes ব্যবহার করা যায় না।
Elevation ও terrain horizon
Conventional mathematical Ascendant true astronomical horizon ব্যবহার করে; observer elevation বা পাহাড়ের দৃশ্যমান skyline সাধারণত house/Lagna definition বদলায় না। আপনি যদি “visible ecliptic rise over terrain” নামে নতুন research quantity চান, সেটি standard Lagna থেকে আলাদা label করুন।
Tropical থেকে nirayana Lagna
Horizon–ecliptic geometry থেকে প্রথমে tropical Ascendant পাওয়া সুবিধাজনক। তারপর declared ayanamsa অনুযায়ী nirayana longitude:
Nirayana Lagna = Normalize(Tropical Lagna − Ayanamsa)
কিন্তু সব library-এর sidereal house mode একই mathematical convention নেয় না। Swiss Ephemeris বিভিন্ন sidereal modes ও house calculation path সমর্থন করে। আপনার project যদি Lahiri, Surya Siddhanta বা custom ayanamsa ব্যবহার করে, profile ID ও epoch definition স্পষ্ট রাখুন।
Rashi, degree, kala
Normalized nirayana longitude 0°–360° হলে:
rashi index = floor(longitude ÷ 30°)
degree in rashi = longitude mod 30°
arcminute = fractional degree × 60
arcsecond = fractional arcminute × 60
Printed Panjika-র দণ্ড-পল বা বিশেষ sphuta notation থাকলে raw degree থেকে formatting করুন; formatted value দিয়ে subsequent calculation করবেন না।
Lagna-এর শেষ সময় কীভাবে নির্ণয় করবেন?
একটি Lagna শেষ হয় যখন nirayana Ascendant পরবর্তী 30° boundary অতিক্রম করে। এটি সরাসরি “বর্তমান সময় + দুই ঘণ্টা” নয়। Root-finding workflow:
- বর্তমান instant-এ nirayana Lagna longitude নিন;
- পরবর্তী sign boundary নির্ধারণ করুন;
- Time interval-এ Ascendant–boundary signed difference evaluate করুন;
- Bracket পাওয়া পর্যন্ত ছোট steps-এ এগিয়ে যান;
- Bisection বা safeguarded solver দিয়ে second-level instant বের করুন;
- UTC result-কে location time zone-এ display করুন;
- একই process দিয়ে পরবর্তী সব ১২টি boundary সংগ্রহ করুন।
0°/360° wrap
মীন থেকে মেষে যাওয়ার সময় raw subtraction +359° বা −359° jump দিতে পারে। Angular difference normalize করে signed shortest difference ব্যবহার করুন, অথবা continuous unwrapped longitude maintain করুন।
Sunrise-to-sunrise Lagna report
Daily Panchanga-তে sunrise instant থেকে next sunrise পর্যন্ত boundary scan করলে ঐ বৈদিক দিনের সব Lagna-ending time পাওয়া যায়। Monthly report-এ প্রতিটি civil date-এর chosen day boundary স্পষ্ট লিখুন—midnight-to-midnight না sunrise-to-sunrise।
Swiss Ephemeris-এ Lagna ও houses
Swiss Ephemeris-এর swe_houses, swe_houses_ex ও swe_houses_ex2 UT Julian day, geographic latitude, geographic longitude এবং house-system code থেকে cusps, Ascendant ও MC দেয়। Extended function sidereal ও non-nutation flags গ্রহণ করতে পারে।
// Conceptual C# call signature
int result = swe_houses_ex2(
jdUt,
flags,
observer.LatitudeDeg,
observer.LongitudeDeg,
houseSystem,
cusps,
ascmc,
cuspSpeed,
ascmcSpeed,
error);
double ascendant = ascmc[0];
double midheaven = ascmc[1];
ascmc array-এর exact indices wrapper documentation দিয়ে যাচাই করুন। Array length বা unmanaged signature ভুল হলে calculation ঠিক হলেও memory corruption হতে পারে।
swe_houses_armc
ARMC, geographic latitude এবং obliquity আগে থেকেই থাকলে swe_houses_armc ব্যবহার করা যায়। এটি research trace-এ উপকারী, কারণ Earth-rotation stage ও horizon-geometry stage আলাদাভাবে যাচাই করা যায়।
double armcDeg = NormalizeDegrees(localApparentSiderealHours * 15.0);
swe_houses_armc(
armcDeg,
observer.LatitudeDeg,
trueObliquityDeg,
houseSystem,
cusps,
ascmc);
Sidereal mode global state
Sidereal houses চাইলে calculation-এর আগে intended sidereal mode set করুন। Shared web application-এ global/native state thread-safeভাবে encapsulate করুন, যাতে এক user-এর Lahiri mode অন্য user-এর custom Surya Siddhanta mode-এ leak না করে।
C# calculation pipeline
public sealed class LagnaRequest
{
public DateTime LocalCivilTime { get; set; }
public string TimeZoneId { get; set; }
public double LatitudeDeg { get; set; }
public double LongitudeDeg { get; set; }
public string AyanamsaId { get; set; }
public SiderealFrameProfile FrameProfile { get; set; }
}
public sealed class LagnaTrace
{
public DateTime UtcInstant { get; set; }
public double JulianDayUt1 { get; set; }
public double JulianDayTt { get; set; }
public double Dut1Seconds { get; set; }
public double GmstHours { get; set; }
public double EquationOfEquinoxesHours { get; set; }
public double GastHours { get; set; }
public double LocalSiderealHours { get; set; }
public double ArmcDeg { get; set; }
public double ObliquityDeg { get; set; }
public double TropicalAscendantDeg { get; set; }
public double AyanamsaDeg { get; set; }
public double NirayanaAscendantDeg { get; set; }
}
Pipeline orchestration
LagnaTrace CalculateLagna(LagnaRequest request)
{
InstantScales t = timeScaleService.Resolve(
request.LocalCivilTime,
request.TimeZoneId);
SiderealState s = earthRotationService.Calculate(
t.JulianDayUt1,
t.JulianDayTt,
request.LongitudeDeg,
request.FrameProfile);
double tropical = horizonEngine.Ascendant(
s.ArmcDeg,
request.LatitudeDeg,
s.ObliquityDeg);
double ayanamsa = ayanamsaService.Value(
t.JulianDayTt,
request.AyanamsaId);
return BuildTrace(t, s, tropical, ayanamsa);
}
Input validation
static void Validate(LagnaRequest request)
{
if (request.LatitudeDeg < -90 || request.LatitudeDeg > 90)
throw new ArgumentOutOfRangeException("LatitudeDeg");
if (request.LongitudeDeg < -180 || request.LongitudeDeg > 180)
throw new ArgumentOutOfRangeException("LongitudeDeg");
if (String.IsNullOrWhiteSpace(request.TimeZoneId))
throw new ArgumentException("Time-zone ID is required.");
if (String.IsNullOrWhiteSpace(request.AyanamsaId))
throw new ArgumentException("Ayanamsa profile is required.");
}
Validation checklist
- Local civil input-এর time-zone ID explicit;
- DST transition-এর ambiguous time policy আছে;
- DST spring-gap invalid time reject/resolve করা হয়;
- Historical offset database versioned;
- UTC conversion একবারই হয়;
- DST sidereal formula-তে দ্বিতীয়বার যোগ হয় না;
- UT1 ও UTC পৃথক fields;
- DUT1 sign যাচাই করা হয়;
- TT এবং UT1 Julian days পৃথক;
- ΔT/DUT1 double-applied হয় না;
- Earth Rotation Angle UT1-ভিত্তিক;
- Precession–nutation TT-compatible;
- GMST mean frame-এ থাকে;
- GAST equation of equinoxes অন্তর্ভুক্ত করে;
- Equation of equinoxes দুইবার যোগ হয় না;
- Longitude east-positive convention documented;
- West longitude negative test আছে;
- Longitude degree থেকে sidereal hour-এ ÷15 হয়;
- Local sidereal time 0–24 hour normalize হয়;
- ARMC 0–360 degree normalize হয়;
- Sidereal time calculation latitude-independent;
- Ascendant calculation latitude-dependent;
- Geographic latitude ব্যবহৃত হয়;
- Geocentric latitude ভুলে ব্যবহার হয় না;
- Mean/apparent obliquity selected frame-এর সঙ্গে মেলে;
- Vector intersection eastern point বেছে নেয়;
- Descendant ভুলে Ascendant হয় না;
atan2quadrant test আছে;- 0°/360° longitude wrap test আছে;
- Equator latitude test করা হয়;
- Northern mid-latitude test করা হয়;
- Southern latitude test করা হয়;
- High-latitude behavior test করা হয়;
- Near-polar numerical stability test আছে;
- Tropical Ascendant raw value সংরক্ষিত;
- Ayanamsa profile ID সংরক্ষিত;
- Ayanamsa TT instant-এ evaluate হয়;
- Nirayana subtraction একবারই হয়;
- Sidereal-house library mode double-subtract করে না;
- Ascendant ও MC index mapping verified;
- Native array length verified;
- Requested এবং returned flags সংরক্ষিত;
- House system code explicit;
- Lagna report house-system-independent claim করে না;
- Boundary solver raw longitude ব্যবহার করে;
- Boundary bracket wrap-safe;
- Sign duration fixed দুই ঘণ্টা ধরা হয় না;
- Sunrise-to-sunrise scan next sunrise পর্যন্ত যায়;
- Output time requested location zone-এ format হয়;
- Swiss/USNO comparison একই instant ও frame-এ হয়;
- Regression trace-এ engine/model versions থাকে;
- Historical Earth-rotation uncertainty প্রকাশিত;
- Cache key-তে location, instant, frame ও ayanamsa থাকে;
- Concurrent sidereal-mode leakage test করা হয়;
- HTML/XML/API-তে tropical/nirayana label স্পষ্ট।
সাধারণ ভুল ও সমাধান
| ভুল | ফল | সমাধান |
|---|---|---|
| Local clock সরাসরি Julian day করা | UTC offset/DST পরিমাণ Lagna shift | Time-zone rule দিয়ে আগে UTC |
| UTC-কে exact UT1 ধরা | Precision ও historical mismatch | DUT1 বা declared approximation |
| Longitude sign উল্টো | কয়েক ঘণ্টার rotation error | East-positive invariant |
| GAST-এর সঙ্গে nutation আবার যোগ | Equation-of-equinoxes double correction | Named mean/apparent profiles |
| Sidereal time-এ latitude যোগ | ভুল Earth-rotation angle | Latitude শুধু horizon geometry-তে |
| প্রতি রাশি ২ ঘণ্টা | Lagna-end times ভুল | Actual boundary root solve |
| Ayanamsa দুইবার বিয়োগ | Wrong nirayana Lagna | Library mode বনাম manual mode একটিই |
| Formatted degree দিয়ে next boundary | Second/minute-level discontinuity | Full-precision raw longitude |
উপসংহার
Lagna হলো local celestial geometry-এর ফল। Civil time শুধু input; প্রথমে সেটিকে UTC, তারপর UT1/TT scales-এ রূপান্তর করে Earth-এর orientation নির্ণয় করতে হয়। Greenwich sidereal time-এ longitude যোগ করলে local meridian পাওয়া যায়, কিন্তু Lagna পেতে latitude ও ecliptic obliquity অপরিহার্য।
Mean এবং apparent sidereal chain উভয়ই internally consistent হতে পারে। ভুল হয় যখন GMST, GAST, nutation, mean/true obliquity ও ayanamsa অস্পষ্টভাবে মেশানো হয়। একইভাবে tropical Ascendant এবং nirayana Lagna একই সংখ্যা নয়; declared ayanamsa transformation দরকার।
Production software-এ calculation trace সংরক্ষণ করলে user শুধু “মীন লগ্ন শেষ ৭:৪২” দেখবেন না—প্রয়োজনে জানা যাবে কোন civil instant, UT1, GAST, longitude, latitude, obliquity এবং ayanamsa থেকে ফলটি এসেছে। এটিই গবেষণাযোগ্য পঞ্জিকার মূল শক্তি।
তথ্যসূত্র ও আরও পাঠ
- U.S. Naval Observatory—Computing Approximate Sidereal Time; GMST, GAST, UT1/TT এবং local sidereal time-এর প্রকাশিত formula।
- U.S. Naval Observatory—Sidereal Time Data Service; Greenwich/local mean ও apparent sidereal time এবং equation of equinoxes।
- U.S. Naval Observatory—Computing Altitude and Azimuth from GAST; location, apparent coordinates ও local horizon transformation।
- USNO Circular 179; IAU reference systems, time scales ও Earth-rotation models।
- IAU SOFA Cookbooks; Earth Rotation Angle, sidereal time, time scales, precession ও nutation।
- Swiss Ephemeris Programmer’s Documentation;
swe_sidtime,swe_houses_ex2ওswe_houses_armc।
মন্তব্য, আলোচনা ও প্রশ্ন