Try Astrologer API

Subscribe to support and grow the project.

Celestial Coordinate Systems #

A coordinate system on the celestial sphere requires three choices: a fundamental plane (which defines the “equator”), a reference direction along that plane (which defines the zero point), and a sign convention (which defines positive directions). The previous article established the planes; this article defines the coordinate systems built on them, develops the spherical-to-cartesian conversion that underpins all transformations, and addresses the normalization traps that cause software errors.

Ecliptic Coordinates ($\lambda$, $\beta$) #

The ecliptic coordinate system is the native system of astrology. Its fundamental plane is the ecliptic, and its reference direction is the vernal equinox ($\gamma$).

Ecliptic longitude ($\lambda$) is measured along the ecliptic from $\gamma$, increasing eastward (the direction of the Sun’s annual motion through the zodiac). Range: $0°$ to $360°$. The twelve zodiacal signs partition this circle into 30° arcs, as tabulated in the previous article.

Ecliptic latitude ($\beta$) is measured perpendicular to the ecliptic. Positive toward the north ecliptic pole (NEP), negative toward the south ecliptic pole (SEP). Range: $-90°$ to $+90°$.

The Sun’s ecliptic latitude is zero by definition — the ecliptic is the Sun’s path. The Moon reaches approximately $\pm 5.15°$. Most planets remain within a few degrees of the ecliptic because their orbital planes are nearly coplanar with Earth’s. Pluto is the notable exception, with an orbital inclination of about 17° to the ecliptic.

In astrological practice, ecliptic latitude is usually ignored: a chart displays ecliptic longitude projected onto the ecliptic plane, as if every object lay exactly on the ecliptic. This is a deliberate simplification. Two planets can have the same ecliptic longitude but be separated by several degrees of latitude — a condition relevant to occultations and to some aspect theories, but not to standard chart drawing.

The Zodiacal Longitude Convention #

Astrology commonly expresses ecliptic longitude in sign-degree-minute format rather than as a continuous angle. The conversion is:

$$ \text{sign index} = \left\lfloor \frac{\lambda}{30} \right\rfloor $$

$$ \text{degree within sign} = \lambda - 30 \times \text{sign index} $$

where the sign index runs from 0 (Aries) to 11 (Pisces), and $\lfloor \cdot \rfloor$ is the floor function. A longitude of $\lambda = 197.83°$ gives sign index 6 (Libra), degree $197.83 - 180 = 17.83°$, or 17°49′48″ Libra.

The reverse conversion is trivial:

$$ \lambda = 30 \times \text{sign index} + \text{degree within sign} $$

Software should store and compute with continuous ecliptic longitude in decimal degrees (or radians). The sign-degree format is a display concern, not a computational one.

Equatorial Coordinates ($\alpha$, $\delta$) #

The equatorial coordinate system uses the celestial equator as its fundamental plane and the vernal equinox as its reference direction — the same reference direction as ecliptic coordinates, but measured along a different great circle.

Right ascension ($\alpha$) is measured along the celestial equator from $\gamma$, increasing eastward. It is conventionally expressed in time units: $0^h$ to $24^h$, where $24^h = 360°$. The conversion factor is $15°/\text{h}$.

Declination ($\delta$) is measured from the equator toward the poles. Positive northward (toward NCP), negative southward (toward SCP). Range: $-90°$ to $+90°$.

The equatorial system is fundamental to observational astronomy because it is tied to the Earth’s rotation axis, which determines when and where objects rise, transit, and set. Star catalogs, telescope control systems, and ephemerides all use equatorial coordinates as their primary system. The transformation from equatorial to ecliptic coordinates (or vice versa) requires the obliquity of the ecliptic and is treated in Coordinate Transformations.

Right Ascension and the Sidereal Clock #

Right ascension has a direct relationship to time. The local sidereal time (LST) at any moment equals the right ascension of the point on the celestial equator that is currently crossing the upper meridian. An object’s hour angle $H$ — how far west of the meridian it has moved — is:

$$ H = \text{LST} - \alpha $$

This means that right ascension is not just a spatial coordinate but a temporal one: it tells you when an object will transit the meridian. This connection between spatial coordinates and time is what makes sidereal time so central to chart calculation, as developed in Sidereal Time.

Horizontal Coordinates ($A$, $h$) #

The horizontal coordinate system uses the observer’s horizon as its fundamental plane. It is the only system that depends on the observer’s geographic position.

Azimuth ($A$) is measured along the horizon. In this series, we adopt the convention: from north, increasing eastward (clockwise viewed from above). North = 0°, East = 90°, South = 180°, West = 270°. Range: $0°$ to $360°$.

Altitude ($h$) is measured from the horizon toward the zenith. Positive above the horizon, negative below. Range: $-90°$ to $+90°$. The zenith is $h = +90°$; the nadir is $h = -90°$.

The horizontal system is intuitive — it describes where to look in the sky — but it changes continuously as the Earth rotates and varies between observers at different locations. It is rarely used directly in chart calculation, but it is essential for computing rising and setting times, and it appears in the derivation of the Ascendant. The transformation from equatorial to horizontal coordinates involves the observer’s latitude and the local sidereal time; see Coordinate Transformations.

Zenith Distance #

The zenith distance $z$ is the complement of altitude:

$$ z = 90° - h $$

Some formulas in spherical astronomy are more naturally expressed in terms of zenith distance than altitude. When $z = 90°$, the object is on the horizon. When $z > 90°$, it is below the horizon.

Hour Angle ($H$) #

The hour angle is not a full coordinate system but a single coordinate that replaces right ascension in a system tied to the observer’s meridian rather than to $\gamma$. It is measured westward along the equator from the upper meridian. An object on the meridian has $H = 0$; an object that transited one hour ago has $H = 1^h$ (or 15°).

The hour angle increases continuously as the Earth rotates. Combined with declination, it forms the hour-angle–declination system, which is particularly natural for describing diurnal motion: an object’s declination is (nearly) constant over a night, while its hour angle increases uniformly.

For rising/setting calculations, the critical hour angle is the one at which the object crosses the horizon. Setting $h = 0$ in the equatorial-to-horizontal transformation gives the hour angle at rising/setting:

$$ \cos H_0 = -\tan \phi \tan \delta $$

where $\phi$ is the observer’s latitude. This formula fails (no rising or setting) when $|\tan \phi \tan \delta| > 1$, which occurs for circumpolar or permanently invisible objects. The derivation is in Coordinate Transformations.

Galactic Coordinates ($l$, $b$) #

The galactic coordinate system uses the plane of the Milky Way as its fundamental plane, with the galactic center as the reference direction. Galactic longitude ($l$) is measured from the galactic center direction, increasing in the direction of galactic rotation. Galactic latitude ($b$) is measured from the galactic plane, positive toward the north galactic pole (NGP).

The IAU 1958 definition places the north galactic pole at equatorial coordinates $\alpha = 12^h 49^m$, $\delta = +27.4°$ (J2000.0 refined values: $\alpha = 12^h 51^m 26.282^s$, $\delta = +27°07’42.01’‘$), and the galactic center direction at $\alpha = 17^h 45^m 37.224^s$, $\delta = -28°56’10.23’'$.

Galactic coordinates are irrelevant to conventional chart calculation but occasionally appear in specialized astrological contexts (galactic center transits, super-galactic directions). They are included here for completeness. The transformation between equatorial and galactic coordinates follows the same rotation-matrix procedure used for any coordinate change and involves no new mathematical techniques beyond those in the next article.

Spherical and Cartesian Representations #

Every coordinate system on the celestial sphere can be expressed either as two angles (the spherical representation) or as a three-component unit vector (the cartesian representation). Both carry the same information for a unit sphere, but cartesian coordinates make transformations between systems straightforward: a coordinate transformation becomes a matrix multiplication.

Spherical to Cartesian #

Given a longitude-like angle $\lambda$ (measured in the fundamental plane from the reference direction) and a latitude-like angle $\beta$ (measured from the fundamental plane toward the pole), the corresponding unit vector is:

$$ \begin{pmatrix} x \ y \ z \end{pmatrix} = \begin{pmatrix} \cos\beta \cos\lambda \ \cos\beta \sin\lambda \ \sin\beta \end{pmatrix} $$

This places the $x$-axis along the reference direction ($\lambda = 0$, $\beta = 0$), the $y$-axis 90° ahead in the fundamental plane, and the $z$-axis toward the positive pole. The vector has unit length: $x^2 + y^2 + z^2 = 1$.

Applied to each coordinate system:

System $\lambda$ parameter $\beta$ parameter $x$-axis points toward
Ecliptic Ecliptic longitude $\lambda$ Ecliptic latitude $\beta$ Vernal equinox ($\gamma$)
Equatorial Right ascension $\alpha$ Declination $\delta$ Vernal equinox ($\gamma$)
Horizontal Azimuth $A$ Altitude $h$ North point of horizon
Galactic Galactic longitude $l$ Galactic latitude $b$ Galactic center

Cartesian to Spherical #

The inverse conversion recovers the angles from the unit vector:

$$ \lambda = \text{atan2}(y, x) $$

$$ \beta = \arcsin(z) = \text{atan2}(z, \sqrt{x^2 + y^2}) $$

The function $\text{atan2}(y, x)$ is essential. Unlike $\arctan(y/x)$, it returns the correct quadrant for all inputs and handles $x = 0$ without division by zero. Its output range is typically $(-\pi, +\pi]$ or $(-180°, +180°]$, which must be normalized to $[0°, 360°)$ for longitude-type coordinates.

For the latitude, either $\arcsin(z)$ or $\text{atan2}(z, \sqrt{x^2+y^2})$ works mathematically. The latter is numerically preferable near the poles ($|z| \approx 1$) because $\arcsin$ has poor precision there due to its steep derivative.

Why Cartesian Matters #

The power of cartesian representation is that transformations between coordinate systems reduce to rotation matrices. To convert from ecliptic to equatorial coordinates, one rotates the cartesian vector by the obliquity $\varepsilon$ around the $x$-axis (which points toward $\gamma$, common to both systems). The next article develops these rotations in full.

Normalization and Discontinuities #

Angular coordinates have inherent discontinuities and wraparound behavior that cause frequent software errors. This section catalogs the issues and the standard remedies.

Longitude Normalization #

Ecliptic longitude, right ascension, azimuth, and hour angle are all periodic with period 360° (or $24^h$ for RA and HA). After any arithmetic operation, the result must be normalized to the canonical range. The standard normalization to $[0°, 360°)$ is:

$$ \lambda_{\text{norm}} = \lambda - 360° \times \left\lfloor \frac{\lambda}{360°} \right\rfloor $$

This works for negative values as well: $-10°$ normalizes to $350°$; $-370°$ normalizes to $350°$. Many programming languages provide a modulus operator that handles this, but the behavior for negative arguments varies between languages (C’s fmod can return negative values; Python’s % always returns non-negative for a positive divisor). Verify the behavior in your language before relying on it.

The 360°/0° Discontinuity #

The longitude range has a discontinuity at 0°/360°. Two objects at $\lambda = 359°$ and $\lambda = 1°$ are 2° apart, not 358° apart. The naive subtraction gives the wrong answer. The correct angular separation along the longitude circle is:

$$ \Delta\lambda = \min(|\lambda_2 - \lambda_1|, ; 360° - |\lambda_2 - \lambda_1|) $$

or, equivalently:

$$ \Delta\lambda = 180° - ||\lambda_2 - \lambda_1| - 180°| $$

For aspect calculation, this wraparound handling is critical. An opposition between a planet at 5° Aries ($\lambda = 5°$) and a planet at 5° Libra ($\lambda = 185°$) must yield a separation of 180°, which the naive subtraction does give — but an aspect between 2° Aries ($\lambda = 2°$) and 358° ($28° \text{ Pisces}$) must yield 4°, not 356°.

The RA/HA Discontinuity #

Right ascension wraps at $24^h$/$0^h$ (equivalently $360°$/$0°$). The same normalization and shortest-arc logic applies. Hour angle additionally can be expressed in a signed range $(-12^h, +12^h]$ for some applications (negative = east of meridian, positive = west). Converting between the unsigned $[0^h, 24^h)$ and signed $(-12^h, +12^h]$ ranges:

$$ H_{\text{signed}} = \begin{cases} H & \text{if } H \leq 12^h \ H - 24^h & \text{if } H > 12^h \end{cases} $$

Latitude Has No Wraparound #

Latitude-type coordinates ($\beta$, $\delta$, $h$, $b$) range from $-90°$ to $+90°$ and do not wrap. A latitude of $+91°$ is not a valid value; it indicates an error. In the cartesian representation, latitude is recovered from $\arcsin(z)$, which inherently returns values in $[-90°, +90°]$, so no normalization is needed.

Quadrant Ambiguity in $\arctan$ #

The single-argument $\arctan$ function returns values in $(-90°, +90°)$, which covers only two quadrants. For a longitude-type coordinate that spans four quadrants, $\arctan(y/x)$ is ambiguous: $\arctan(1/1) = \arctan(-1/-1) = 45°$, but the correct longitudes are $45°$ and $225°$. Always use $\text{atan2}(y, x)$, which resolves the quadrant using the individual signs of $x$ and $y$.

Coordinate Systems in Practice #

The practical workflow for chart calculation typically involves several coordinate systems at different stages:

  1. Ephemeris output arrives in equatorial coordinates ($\alpha$, $\delta$) or ecliptic coordinates ($\lambda$, $\beta$), depending on the engine and its configuration.

  2. Zodiacal positions (what appears in the chart) require ecliptic longitude $\lambda$. If the ephemeris provides equatorial coordinates, a transformation is necessary.

  3. Chart angles (Ascendant, MC) are computed from the local sidereal time and the observer’s latitude, bridging equatorial and horizontal geometry. The MC is found directly from sidereal time in equatorial coordinates; the Ascendant involves the ecliptic-equatorial obliquity.

  4. Rising and setting times require horizontal coordinates, or equivalently, the hour angle at the horizon.

The next article, Coordinate Transformations and Spherical Trigonometry, develops the rotation matrices and spherical triangle formulas that connect these systems.

References #

  • Meeus, J. (1998). Astronomical Algorithms, 2nd ed. Willmann-Bell. Chapters 12–13.
  • Explanatory Supplement to the Astronomical Almanac, 3rd ed. (2013). University Science Books. Chapter 1.
  • Smart, W. M., & Green, R. M. (1977). Textbook on Spherical Astronomy, 6th ed. Cambridge University Press. Chapters 1–2.
  • Blaauw, A. et al. (1960). “The new IAU system of galactic coordinates.” Monthly Notices of the Royal Astronomical Society, 121, 123–131.

All articles are curated by Giacomo Battaglia and follow our editorial guidelines.

Last updated: August 14, 2026

Related Articles

Powered by Kerykeion and the Astrology API