Celestial Coordinate System Calculator

ANALife Services AuthorityNational Calculator Authority›Celestial Coordinate System Calculator

.calc-container { max-width: 640px; margin: 2rem 0; padding: 1.5rem; background: #fff; border: 1px solid #ddd; border-radius: 8px; box-shadow: 0 1px 3px rgba(0,0,0,0.06); font-family: system-ui, -apple-system, sans-serif; } .calc-container h3 { font-family: Georgia, serif; font-size: 1.15rem; color: #1a1a1a; margin-bottom: 1rem; padding-bottom: 0.5rem; border-bottom: 2px solid var(--ac, #3d5a80); } .calc-row { display: flex; align-items: center; gap: 0.75rem; margin-bottom: 0.75rem; flex-wrap: wrap; } .calc-row label { min-width: 160px; font-size: 0.9rem; color: #333; font-weight: 500; } .calc-row input[type="number"], .calc-row select { flex: 1; min-width: 120px; max-width: 200px; padding: 0.5rem 0.6rem; border: 1px solid #ccc; border-radius: 4px; font-size: 0.9rem; font-family: system-ui, sans-serif; color: #1a1a1a; background: #fafaf8; } .calc-row input:focus, .calc-row select:focus { outline: none; border-color: var(--ac, #3d5a80); box-shadow: 0 0 0 2px rgba(26,74,138,0.12); } .calc-row .unit { font-size: 0.82rem; color: #888; min-width: 30px; } .calc-btn { display: inline-block; margin-top: 0.5rem; padding: 0.55rem 1.5rem; background: var(--ac, #3d5a80); color: #fff; border: none; border-radius: 4px; font-size: 0.9rem; font-weight: 600; cursor: pointer; font-family: system-ui, sans-serif; } .calc-btn:hover { opacity: 0.9; } .calc-result { margin-top: 1.25rem; padding: 1rem 1.25rem; background: #f0f6fc; border-left: 3px solid var(--ac, #3d5a80); border-radius: 0 6px 6px 0; display: none; } .calc-result.visible { display: block; } .calc-result-label { font-size: 0.78rem; text-transform: uppercase; letter-spacing: 0.06em; color: #666; margin-bottom: 0.25rem; } .calc-result-value { font-size: 1.6rem; font-weight: 700; color: var(--ac, #3d5a80); } .calc-result-detail { font-size: 0.85rem; color: #555; margin-top: 0.5rem; line-height: 1.5; } .calc-note { margin-top: 1rem; font-size: 0.8rem; color: #888; font-style: italic; } .calc-grid { display: grid; grid-template-columns: 1fr 1fr; gap: 0.75rem; margin-top: 0.75rem; } .calc-grid-item { padding: 0.6rem 0.8rem; background: #f8f9fa; border-radius: 4px; border: 1px solid #eee; } .calc-grid-item .label { font-size: 0.75rem; color: #888; text-transform: uppercase; letter-spacing: 0.04em; } .calc-grid-item .value { font-size: 1.1rem; font-weight: 600; color: #1a1a1a; } @media (max-width: 720px) { .calc-row { flex-direction: column; align-items: flex-start; gap: 0.3rem; } .calc-row label { min-width: auto; } .calc-row input[type="number"], .calc-row select { max-width: 100%; width: 100%; } .calc-grid { grid-template-columns: 1fr; } } .calc-chart { margin: 1rem 0; text-align: center; } .calc-chart svg { max-width: 100%; height: auto; } .calc-chart-legend { display: flex; flex-wrap: wrap; justify-content: center; gap: 0.6rem 1.2rem; margin-top: 0.6rem; font-size: 0.8rem; color: #555; } .calc-chart-legend span { display: inline-flex; align-items: center; gap: 0.3rem; } .calc-chart-legend i { display: inline-block; width: 10px; height: 10px; border-radius: 2px; font-style: normal; } .calc-related { max-width: 640px; margin: 2rem 0 1rem; padding: 1.25rem 1.5rem; background: #f8f9fa; border: 1px solid #e8e8e8; border-radius: 8px; } .calc-related h3 { font-family: Georgia, serif; font-size: 1rem; color: #1a1a1a; margin: 0 0 0.75rem; padding-bottom: 0.4rem; border-bottom: 2px solid var(--ac, #3d5a80); } .calc-related-list { list-style: none; padding: 0; margin: 0 0 0.75rem; display: grid; grid-template-columns: 1fr 1fr; gap: 0.4rem 1.5rem; } .calc-related-list li a { font-size: 0.88rem; color: var(--ac, #3d5a80); text-decoration: none; } .calc-related-list li a:hover { text-decoration: underline; } .calc-browse-all { margin: 0.5rem 0 0; font-size: 0.9rem; font-weight: 600; } .calc-browse-all a { color: var(--ac, #3d5a80); text-decoration: none; } .calc-browse-all a:hover { text-decoration: underline; } @media (max-width: 720px) { .calc-related-list { grid-template-columns: 1fr; } }

Celestial Coordinate System Calculator

Convert celestial coordinates between Equatorial (RA/Dec), Horizontal (Altitude/Azimuth), and Ecliptic (Longitude/Latitude) coordinate systems.

Conversion Type

Equatorial → Horizontal (Altitude/Azimuth) Horizontal → Equatorial (RA/Dec) Equatorial → Ecliptic Ecliptic → Equatorial

Right Ascension (RA) (degrees, 0–360)

Declination (Dec) (degrees, −90 to +90)

Altitude (degrees, −90 to +90)

Azimuth (degrees, 0–360, N=0)

Ecliptic Longitude (λ) (degrees, 0–360)

Ecliptic Latitude (β) (degrees, −90 to +90)

Observer Latitude (φ) (degrees, −90 to +90)

Local Sidereal Time (LST) (degrees, 0–360)

Obliquity of the Ecliptic (ε) (degrees, default J2000: 23.4393°)

Calculate

#### Formulas

Equatorial → Horizontal:

Hour Angle: H = LST − RA

sin(Alt) = sin(Dec)·sin(φ) + cos(Dec)·cos(φ)·cos(H)

cos(Az)·cos(Alt) = sin(Dec)·cos(φ) − cos(Dec)·sin(φ)·cos(H)

sin(Az)·cos(Alt) = −cos(Dec)·sin(H)

Horizontal → Equatorial:

sin(Dec) = sin(Alt)·sin(φ) + cos(Alt)·cos(φ)·cos(Az)

cos(H)·cos(Dec) = sin(Alt)·cos(φ) − cos(Alt)·sin(φ)·cos(Az)

sin(H)·cos(Dec) = −cos(Alt)·sin(Az)

RA = LST − H

Equatorial → Ecliptic:

sin(β) = sin(Dec)·cos(ε) − cos(Dec)·sin(ε)·sin(RA)

cos(λ)·cos(β) = cos(Dec)·cos(RA)

sin(λ)·cos(β) = sin(Dec)·sin(ε) + cos(Dec)·cos(ε)·sin(RA)

Ecliptic → Equatorial:

sin(Dec) = sin(β)·cos(ε) + cos(β)·sin(ε)·sin(λ)

cos(RA)·cos(Dec) = cos(β)·cos(λ)

sin(RA)·cos(Dec) = −sin(β)·sin(ε) + cos(β)·cos(ε)·sin(λ)

#### Assumptions & References

function celDeg2Rad(d) { return d * Math.PI / 180; } function celRad2Deg(r) { return r * 180 / Math.PI; } function celNorm360(a) { return ((a % 360) + 360) % 360; }

function celToggleInputs() { var t = document.getElementById('cel-conv-type').value; document.getElementById('cel-eq-inputs').style.display = (t === 'eq2hor' || t === 'eq2ecl') ? '' : 'none'; document.getElementById('cel-hor-inputs').style.display = (t === 'hor2eq') ? '' : 'none'; document.getElementById('cel-ecl-inputs').style.display = (t === 'ecl2eq') ? '' : 'none'; document.getElementById('cel-obs-inputs').style.display = (t === 'eq2hor' || t === 'hor2eq') ? '' : 'none'; document.getElementById('cel-obl-inputs').style.display = (t === 'eq2ecl' || t === 'ecl2eq') ? '' : 'none'; document.getElementById('cel-result').innerHTML = ''; }

function celCalc() { var res = document.getElementById('cel-result'); var t = document.getElementById('cel-conv-type').value; var err = [];

function getVal(id, label, min, max) { var v = parseFloat(document.getElementById(id).value); if (isNaN(v)) { err.push(label + ' is required.'); return null; } if (v max) { err.push(label + ' must be between ' + min + '° and ' + max + '°.'); return null; } return v; }

var html = '';

if (t === 'eq2hor') { var ra = getVal('cel-ra', 'Right Ascension', 0, 360); var dec = getVal('cel-dec', 'Declination', -90, 90); var lat = getVal('cel-lat', 'Observer Latitude', -90, 90); var lst = getVal('cel-lst', 'Local Sidereal Time', 0, 360); if (err.length) { res.innerHTML = '' + err.join('') + '

'; return; }

var H = celNorm360(lst - ra); var Hr = celDeg2Rad(H); var decR = celDeg2Rad(dec); var latR = celDeg2Rad(lat);

var sinAlt = Math.sin(decR)Math.sin(latR) + Math.cos(decR)Math.cos(latR)*Math.cos(Hr); sinAlt = Math.max(-1, Math.min(1, sinAlt)); var alt = celRad2Deg(Math.asin(sinAlt));

var cosAlt = Math.cos(celDeg2Rad(alt)); var sinAz, cosAz; if (Math.abs(cosAlt) ' + 'Hour Angle (H)' + H.toFixed(4) + '°' + 'Altitude (Alt)' + alt.toFixed(4) + '°' + 'Azimuth (Az)' + az.toFixed(4) + '°' + '';

} else if (t === 'hor2eq') { var alt2 = getVal('cel-alt', 'Altitude', -90, 90); var az2 = getVal('cel-az', 'Azimuth', 0, 360); var lat2 = getVal('cel-lat', 'Observer Latitude', -90, 90); var lst2 = getVal('cel-lst', 'Local Sidereal Time', 0, 360); if (err.length) { res.innerHTML = '' + err.join('') + '

'; return; }

var altR = celDeg2Rad(alt2); var azR = celDeg2Rad(az2); var latR2 = celDeg2Rad(lat2);

var sinDec = Math.sin(altR)Math.sin(latR2) + Math.cos(altR)Math.cos(latR2)*Math.cos(azR); sinDec = Math.max(-1, Math.min(1, sinDec)); var dec2 = celRad2Deg(Math.asin(sinDec));

var cosDec = Math.cos(celDeg2Rad(dec2)); var sinH2, cosH2; if (Math.abs(cosDec) ' + 'Hour Angle (H)' + H2.toFixed(4) + '°' + 'Right Ascension (RA)' + ra2.toFixed(4) + '° (' + (ra2/15).toFixed(4) + ' h)' + 'Declination (Dec)' + dec2.toFixed(4) + '°' + '';

} else if (t === 'eq2ecl') { var ra3 = getVal('cel-ra', 'Right Ascension', 0, 360); var dec3 = getVal('cel-dec', 'Declination', -90, 90); var obl3 = getVal('cel-obl', 'Obliquity', 0, 90); if (err.length) { res.innerHTML = '' + err.join('') + '

'; return; }

var raR = celDeg2Rad(ra3); var decR3 = celDeg2Rad(dec3); var oblR = celDeg2Rad(obl3);

var sinBeta = Math.sin(decR3)Math.cos(oblR) - Math.cos(decR3)Math.sin(oblR)*Math.sin(raR); sinBeta = Math.max(-1, Math.min(1, sinBeta)); var beta = celRad2Deg(Math.asin(sinBeta));

var cosBeta = Math.cos(celDeg2Rad(beta)); var sinLam, cosLam; if (Math.abs(cosBeta) ' + 'Ecliptic Longitude (λ)' + lam.toFixed(4) + '°' + 'Ecliptic Latitude (β)' + beta.toFixed(4) + '°' + '';

} else if (t === 'ecl2eq') { var lam2 = getVal('cel-elon', 'Ecliptic Longitude', 0, 360); var beta2 = getVal('cel-elat', 'Ecliptic Latitude', -90, 90); var obl4 = getVal('cel-obl', 'Obliquity', 0, 90); if (err.length) { res.innerHTML = '' + err.join('') + '

'; return; }

var lamR = celDeg2Rad(lam2); var betaR = celDeg2Rad(beta2); var oblR2 = celDeg2Rad(obl4);

var sinDec4 = Math.sin(betaR)Math.cos(oblR2) + Math.cos(betaR)Math.sin(oblR2)*Math.sin(lamR); sinDec4 = Math.max(-1, Math.min(1, sinDec4)); var dec4 = celRad2Deg(Math.asin(sinDec4));

var cosDec4 = Math.cos(celDeg2Rad(dec4)); var sinRA4, cosRA4; if (Math.abs(cosDec4) ' + 'Right Ascension (RA)' + ra4.toFixed(4) + '° (' + (ra4/15).toFixed(4) + ' h)' + 'Declination (Dec)' + dec4.toFixed(4) + '°' + ''; }

res.innerHTML = html; }

More Calculators

Read Next

Pest Control Service Frequency Cost Planner ANA › Life Services Authority › National Calculator Authority › Pest Control Service Frequency & Cost Planner .calc-container...

Study Time Planner Authority Network America › Life Services Authority › National Calculator Authority .calc-container { max-width: 640px;...

References