Try Astrologer API

Subscribe to support and grow the project.

Ascendant, Midheaven, and Chart Angles #

If you’ve ever looked at a chart wheel, you know the four angles: ASC on the left, DSC on the right, MC at the top, IC at the bottom. These are the structural cross of every chart, and they change faster than any planet — the Ascendant moves roughly 1° every 4 minutes of clock time. This article shows exactly where the formulas come from and how to compute them.

The inputs you need are three numbers: the local apparent sidereal time (LAST), the observer’s geographic latitude ($\phi$), and the true obliquity of the ecliptic ($\varepsilon$). Everything else follows from spherical trigonometry.

The Midheaven (MC) #

The Midheaven, or Medium Coeli, is the point where the ecliptic crosses the observer’s upper meridian — the great circle running from the north celestial pole through the zenith to the south celestial pole.

The right ascension of the MC (RAMC) equals the local apparent sidereal time expressed in degrees:

$$\text{RAMC} = \text{LAST} \times 15°$$

(If LAST is already in degrees, RAMC = LAST directly.)

To convert RAMC to ecliptic longitude, we need the obliquity. The MC lies on the ecliptic with ecliptic latitude $\beta = 0$ (it’s on the ecliptic by definition), so the equatorial-to-ecliptic transformation simplifies. From the general formula $\tan\alpha = \sin\lambda\cos\varepsilon / \cos\lambda$ (with $\beta = 0$), solving for $\lambda$:

$$\tan\lambda_{\text{MC}} = \frac{\tan\text{RAMC}}{\cos\varepsilon}$$

To resolve the quadrant unambiguously:

$$\lambda_{\text{MC}} = \text{atan2}(\sin\text{RAMC},; \cos\text{RAMC} \cdot \cos\varepsilon)$$

normalized to $[0°, 360°)$. The MC must be in the same hemisphere (half of the ecliptic) as the RAMC. If your atan2 implementation returns a value in the wrong hemisphere, add or subtract 180° accordingly.

The IC #

The Imum Coeli is the point diametrically opposite the MC:

$$\lambda_{\text{IC}} = (\lambda_{\text{MC}} + 180°) \bmod 360°$$

The Ascendant (ASC) #

The Ascendant is the ecliptic degree rising above the eastern horizon at the moment and place of the chart. It is the intersection of the ecliptic with the eastern horizon — a point that depends on both the time (via RAMC) and the observer’s latitude.

Derivation #

Consider the astronomical triangle PZX, where P is the north celestial pole, Z is the zenith, and X is the rising point on the horizon. At the eastern horizon, the altitude $h = 0$, and the point lies on the ecliptic ($\beta = 0$). Using the spherical law of cosines for the side PX (the polar distance) and the angle at P (the hour angle), we can derive the ecliptic longitude of the rising point.

The classical result, due to the resolution of the spherical triangle, is:

$$\tan\lambda_{\text{ASC}} = \frac{\cos\text{RAMC}}{-\sin\text{RAMC},\cos\varepsilon - \tan\phi,\sin\varepsilon}$$

For unambiguous quadrant resolution:

$$\lambda_{\text{ASC}} = \text{atan2}!\left(\cos\text{RAMC},; -\sin\text{RAMC},\cos\varepsilon - \tan\phi,\sin\varepsilon\right)$$

normalized to $[0°, 360°)$.

Why latitude matters #

The $\tan\phi$ term is what makes the Ascendant location-dependent. At the equator ($\phi = 0$), the term vanishes and the ASC depends only on RAMC and $\varepsilon$ — all zodiac signs rise in roughly equal time. As $|\phi|$ increases, the $\tan\phi$ term grows, causing some signs to rise much faster than others (signs of short ascension vs. long ascension). This is why, in a random sample of charts from high latitudes, some rising signs appear far more often than others.

The Descendant (DSC) #

$$\lambda_{\text{DSC}} = (\lambda_{\text{ASC}} + 180°) \bmod 360°$$

The Vertex #

The Vertex is the point where the ecliptic crosses the prime vertical (the great circle through the zenith, nadir, and the east and west points of the horizon) on the western side. It is computed with the same formula as the Ascendant, but using the co-latitude ($90° - \phi$) and RAMC shifted by 90°:

$$\lambda_{\text{Vx}} = \text{atan2}!\left(-\cos\text{RAMC},; \sin\text{RAMC},\cos\varepsilon - \frac{\cos\phi}{\sin\phi},\sin\varepsilon\right)$$

The Anti-Vertex is $\lambda_{\text{Vx}} + 180°$.

The Vertex is undefined at the equator ($\phi = 0$) because the prime vertical coincides with the meridian there, and $\cot\phi \to \infty$.

The East Point (Equatorial Ascendant) #

The East Point is the ecliptic degree that would be the Ascendant if the observer were at the equator. Set $\phi = 0$ in the ASC formula:

$$\lambda_{\text{EP}} = \text{atan2}(\cos\text{RAMC},; -\sin\text{RAMC},\cos\varepsilon)$$

Since $\tan 0° = 0$, the latitude term disappears entirely. The East Point is always exactly 90° of right ascension ahead of the MC (though not necessarily 90° of ecliptic longitude ahead, because the ecliptic is tilted relative to the equator).

Polar Latitude Behavior #

At latitudes above the Arctic Circle ($|\phi| > 90° - \varepsilon \approx 66.56°$), portions of the ecliptic can remain permanently above or below the horizon for extended periods. When this happens:

  • The ASC formula still produces a value, but the ecliptic degree it returns may “jump” discontinuously or appear to sweep backward through the zodiac (sometimes called a “retrograde Ascendant”).
  • Some house systems (Placidus, Koch) become undefined because their cusp algorithms require every ecliptic degree to rise and set, which doesn’t happen at polar latitudes. See House Systems.

The MC is never affected by polar issues — the ecliptic always crosses the meridian, regardless of latitude.

Worked Example #

Given: LAST = 5h 03m 59s, $\phi = 41.9028°$N, $\varepsilon = 23.4393°$.

Step 1 — RAMC: $$\text{RAMC} = 5.06639^h \times 15 = 75.996°$$

Step 2 — MC: $$\lambda_{\text{MC}} = \text{atan2}(\sin 75.996°,; \cos 75.996° \times \cos 23.4393°)$$ $$= \text{atan2}(0.97031,; 0.24197 \times 0.91749)$$ $$= \text{atan2}(0.97031,; 0.22201)$$ $$= 77.12°$$

This is 17°07’ Gemini.

Step 3 — ASC: $$\text{numerator} = \cos 75.996° = 0.24197$$ $$\text{denominator} = -\sin 75.996° \times \cos 23.4393° - \tan 41.9028° \times \sin 23.4393°$$ $$= -0.97031 \times 0.91749 - 0.89727 \times 0.39766$$ $$= -0.89032 - 0.35682 = -1.24714$$ $$\lambda_{\text{ASC}} = \text{atan2}(0.24197,; -1.24714)$$

Since $x < 0$ and $y > 0$, we’re in the second quadrant: $$= 180° - \arctan\left(\frac{0.24197}{1.24714}\right) = 180° - 10.98° = 169.02°$$

This is 19°01’ Virgo.

Step 4 — IC and DSC: $$\lambda_{\text{IC}} = 77.12° + 180° = 257.12° \quad (17°07’\text{ Sagittarius})$$ $$\lambda_{\text{DSC}} = 169.02° + 180° = 349.02° \quad (19°01’\text{ Pisces})$$

Verification: At LAST ≈ 5h for Rome’s latitude, the MC should be in Gemini and the ASC in Virgo — consistent with a late-morning birth in mid-May. The MC at 77° (mid-Gemini) and ASC at 169° (late Virgo) are geometrically plausible.

Implementation Notes #

  1. All angles in radians for the trigonometric functions; convert to degrees only for display.
  2. atan2 is mandatory — using single-argument atan loses quadrant information and will produce wrong results for half the sky.
  3. The ASC formula assumes $\beta = 0$ — it finds where the ecliptic plane meets the horizon. If you want the actual rising degree of a planet with nonzero ecliptic latitude, you need a different calculation (relevant for some mundane-position techniques).
  4. True obliquity ($\varepsilon_0 + \Delta\varepsilon$) should be used, not mean obliquity. The difference is small (~9" max) but it shifts the ASC by up to ~20" of longitude.

References #

  • Meeus, J. (1998). Astronomical Algorithms, 2nd ed. Willmann-Bell. Chapter 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. Chapter 3.
  • Holden, R. W. (1977). The Elements of House Division. L. N. Fowler.

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