What these charts say (orientation for non-astrologers)

An astrological chart indicates the position of the sun, planets, and
other places along the ecliptic, or projected to the ecliptic if they are
off of it, at a certain time. The natal chart uses the time and place of
birth, which is defined as the "first breath" of the subject.

Aries = Sagittarius?

The zodiac, astrologically speaking, has
nothing to do with the astronomical constellations in the sky. Instead,
the sign of Aries begins at the Vernal Equinox and extends for 30 degrees
east along the ecliptic. It is followed by the other signs in their
traditional order. (I know that there are other systems but this one seems
to be the most common in the western world.) As the vernal equinox moves
slightly every year, the astrological zodiac drifts away from the
constellations it's based on. On Earth, the vernal equinox has
been in Pisces for about 1500 years, hence we are in the "Age of Pisces".
Mars is currently in the "Age of Ophiuchus", so its sign of "Aries" is mostly
in the constellation of Sagittarius.

The outer ring of each chart depicts the 12 zodiacal signs. The first
sign, Aries (), is defined astrologically as beginning at the position of
the sun at vernal equinox in the northern hemisphere. The next ring divides
each sign into 10° decans, 5° quinances, and individual degrees.
The boundary between signs is called a cusp.

The thick ring indicates the position of each planet, the sun,
both moons, the Ascendant
() and the
Medium Coeli
() from
the birth place at the birth time.
(The Ascendant is the piece of the ecliptic that is coming up over the
eastern horizon and the Medium Coeli ("middle of the sky") is where the
meridian that passes overhead crosses the ecliptic.) These are given as
a degree position within each sign plus some number of minutes.
The Descendant (180° from the Ascendant) and the Imum Coeli (180°
from the Medium Coeli) are not labeled, but are used in some calculations.
If a planet is moving in apparent retrograde, that is indicated by a "" symbol.
I'm using the astrological
symbol for Pluto () rather than the astronomical "PL" symbol.

This
ring is also split into 12 houses, whose position is based on the Ascendant
and the Medium Coeli - see below for details. The cusps between houses are
drawn, and the houses themselves are numbered.

The inner circle indicates the aspects between the various points.
Aspects are the angular separations between the various points on the
chart (not including the house cusps, the Imum Coeli, or the Descendant, but including the Ascendant and Medium Coeli).
Certain angular distances between points have astrological meanings,
such as 180° ( opposition), 90° ( square), and 0° ( conjunction).
Between the 11 named aspects and their allowed errors (referred to as
orbs astrologically), 88 degrees worth of the 180 degrees of possible
separation have named aspects, so there's about half a chance that any two
bodies are in some sort of aspect with each other. The full list of aspects,
degrees, and symbols is included in the symbol key.

How I made these charts

To create a natal chart, you need to be able to find the position of the points
you care about in relation to your "birth" place, at the time you care about.
The open source program
Celestia was very helpful
to me. It's a space simulator that allows the user to navigate to any
place and time, displaying the appearance of celestial objects. Perhaps
more importantly, it includes a
scripting
system based on Lua that exposes much of its data and calculations to
a skilled and patient user. (I didn't know Lua when I began this project
and I'm not sure I know it now, but my script seems to work.)

Setup

I had to do a bit of work before I could really start. This work included
figuring out the position of the ecliptic and the signs, orienting the planet,
and finding out what the birth times and places were for the rovers.

Celestia includes an "ecliptic" reference frame centered on Mars, but I
found that frame to be slightly incorrect. To correct it, I found
the
date and time of the vernal equinox on Mars (technically, the
northern-hemisphere vernal equinox) and
used the sun's position at that time as the z-axis unit vector, found the
sun's position later in the year, crossed that with z to get the y-axis unit
vector, or the normal of the ecliptic,
and finally crossed z and y to get the x-axis unit vector. I also found the
direction of the north pole, by setting my viewing position to 90
degrees latitude and taking the vector between that point and the
center of Mars. These axes are stored in axes.txt.

I also needed the times and locations of the rovers' "births".
I've used landing as birth for the rovers. (Perhaps "first boot-up on
Mars" or "opening of landing shell" would be more appropriate times, but
I couldn't find those.)
The landing times (to a precision of 1 minute) and the landing locations (to
a precision of hundredths of a degree longitude and thousandths of a degree
latitude) can be found at Wikipedia (though I verified them using
the fact sheet at NASA's rover pages).

Data-gathering

For each rover, I set my observing position and time to her birth place and time
and ran my positions.celx script.
(If you try this yourself, make sure to change the directory to which that
script writes.) This script outputs the
vectors from the observer to Mars's two moons, the sun, and the 8 other
planets. It also outputs the vector from the center of Mars to the observer,
which is called the horizon normal and is used for Medium Coeli and Ascendant calculations.
Finally, it moves the observer backwards and forwards in time a day, and
gets the vectors to the sun, planets, and moons at those times, for detecting
retrograde motion.

Calculations

The position vectors were fed into a Perl script to calculate the data of the
chart. That script transforms all the positions into the corrected reference
frame before doing any of its calculations. The data we need are the angular
positions of the planets/sun/moons, whether the planets are retrograde, the
positions of the houses, and the aspects between the points.

The angles of planets/sun/moons are simple to find - use
atan(x,z) to determine their angular position around the ecliptic.
To detect retrograde planets, the script compares the
"yesterday" and "tomorrow" positions for each planet to the current one,
getting the previous and next days' motion around the zodiac. If both
motions are backward the planet is marked as "retrograde"; if one is back
and the other is forward the script throws an error. (Luckily that didn't
happen for either of these charts - but if it did, I'd just need to shrink
a constant in the Lua program to check over a shorter period.)
I don't bother checking the moons or Sun for
retrograde motion, since they can't change apparent direction. I also
don't output anything about Mercury, per the suggestions in
Extraterrestrial Astrology - it's generally too close to the
sun to bother with.

The Ascendant can be calculated as the cross product of the
ecliptic normal vector and the horizon normal. The
Medium Coeli can be similarly found by
crossing the north pole and the horizon normal to get the normal of the
meridian, then crossing that with the ecliptic for the Medium Coeli point.
The Imum Coeli is simply 180 degrees from the Medium Coeli, and the
Descendant is 180 degrees from the Ascendant.

Then there are the houses. There are many systems for
creating the 12
houses of the chart, but the most commonly used is Placidus. In Placidus,
you find the time at which the Ascendant will be the point that is currently
the Medium Coeli, trisect the time between then and now, take the Ascendant
at those times, and split the ecliptic between them as the 10th, 11th, and
12th houses. Then you do the same for the time that it's been since the
Ascendant was at the current Imum Coeli, using those as the
1st, 2nd, and 3rd houses. The remaining house boundaries (or cusps) are
180 degrees opposite those. I spent a few days doing this wrong (mostly
because I forgot to normalize some vectors that really needed normalizing)
but I did get it to work eventually. (Placidus doesn't work for points
within the Arctic Circle or Antarctic Circle, so don't try it.)

Finally, there are the aspects. This is simply a comparison
of the angles of the salient points, to see if their difference matches one
of the named aspects within the aspect's tolerance. For instance, the
quincunx ()
aspect is an angle
of 150° plus or minus 3°. Spirit has Saturn at -157.557° and
Pluto at -6.788° for a difference of 150.769°, so she has Saturn
quincunx Pluto with an orb of 0&deg 46'.

The drawchart.pl Perl script performs these
calculations and outputs a hash of named angles, a list of bodies in aspects
to each other (and what kind of aspect), and a hash of what bodies are in
retrograde. It outputs all of these in Postscript format, as the chart itself
is a Postscript program. (The script also outputs the orb of each aspect,
though that data is not displayed in the chart.)

Drawing the chart

To create the actual chart, the output of drawchart.pl is added to the
chart.ps file (after the %! header).
Drawing the chart is straightforward PostScript list and dictionary parsing,
plus my own artistic abilities.
The chart is aligned on the page so that the Ascendant points directly to
the left.

What these charts mean

Actually, I don't really know - I'm not an astrologer, and I don't know
the details of interpreting a natal chart (a more difficult skill than
creating one). The removal of Mars, Mercury, and Earth's moon and the addition of Earth, Phobos, and Deimos also complicate the interpretation. The
Extraterrestrial Astrology article provides some suggestions for
how to deal with these issues, which would probably be more meaningful to
me if I had more astrological knowledge. If any reader of this page has an
interpretation to offer, I'd be happy to see it and maybe even add it to
this page.

That said, there are some interesting points that even I can pick out.
Both rovers have very similar Ascendants - almost exactly 1 degree apart,
but on opposite sides of a
cusp. The similarity may be due to the geometry of landing - coming from
a similar direction, they'd naturally land on a similar meridian (in
celestial terms). The close conjunction of Venus and Pluto on both charts
is notable, and it is joined by the Medium Coeli in Opportunity's chart.
Opportunity also has a remarkably close conjunction (20 minutes apart)
between Uranus and Deimos. (Visually they aren't actually very close,
since Deimos's orbit is inclined from the ecliptic. Also, it's hard to
tell from the chart, but Uranus is in the 11th house and Deimos is in the
12th.) In the near-month between the landings, Jupiter (sitting at a
close opposition from the Ascendant) crossed both signs (Sagittarius to
Capricorn) and houses (6th to 7th). And by sun signs, Spirit is an Aquarius
and Opportunity is a Pisces.

2012 addendum: With the benefit of hindsight, it's interesting that
Spirit has a Grand Cross, which is considered to be an indicator of
tension and strife. Spirit
lost a wheel in 2006, was trapped by sand in 2009 and ended communication in
2010. Opportunity's T-Square doesn't seem to have had much detrimental effect.

Curiosity's sign is Cancer. I don't see anything particularly notable in
its chart.

Other landings

I'm concentrating on rovers here, but this system could work for many of the
stationary landers on Mars throughout the years. Phoenix is in the Arctic
Circle of Mars, so the method I'm using here won't work.

Contact

I'd be happy to hear comments on these charts or my methodology. Please
don't send any mail attacking or defending astrology in general, or telling
me that it's invalid to cast charts for robots - I did this as a fun
intellectual exercise.