![]() |
das2C
das core C utilities (v3)
|
A body-centered position. More...

Go to the source code of this file.
Macros | |
| #define | das_geosys_isEllipsoidal(S) (((S) == DAS_VSYS_DETIC)||((S) == DAS_VSYS_GRAPHIC)) |
| Is this an ellipsoidal system, i.e. | |
| #define | DAS_FORM_GEOLOC (&das_form_geoloc_vtbl) |
| A position measured from the center of some body. | |
Functions | |
| DAS_API const char * | das_geosys_str (ubyte uSys) |
| Wire token for any of the six system codes, NULL if unrecognized. | |
| DAS_API ubyte | das_geosys_id (const char *sSys) |
| Wire token to code across all six, 0 if unrecognized. | |
| DAS_API const char * | das_geosys_desc (ubyte uSys) |
| One line of prose about any of the six, for a "notes" property. | |
| DAS_API const char * | das_geosys_symbol (ubyte uSys, int iDir) |
| The canonical symbol for direction iDir of any of the six. | |
| DAS_API int8_t | das_geosys_index (ubyte uSys, const char *sSymbol) |
| The inverse of das_geosys_symbol(), or -1 if the symbol is not in it. | |
A body-centered position.
An affine point in 3-D.
Spacecraft ephemeris, a ground station, a sub-satellite track. What makes it a geoloc rather than a vector is an ORIGIN – the center body – and that single fact changes the algebra completely:
geoloc - geoloc = vector a displacement from one to the other
geoloc + vector = geoloc
vector + geoloc = geoloc stated explicitly, never inferred
geoloc - vector = geoloc
geoloc + geoloc = REFUSED adding two positions means nothing
geoloc * anything = REFUSED scaling a position without moving its
origin is meaningless
That is the SAME rule set as form_point.h, which governs calendar time. A datetime is a 1-D affine space whose origin rides in units (TT2000, US2000); a geoloc is the 3-D case whose origin is named by center=. Recognizing they were one structure is what split this file out of the old "geovec".
Parameters:
body= the ORIGIN body's name. REQUIRED; without it the values are free vectors and belong in form_vector.h. A frame also has a body – what it is FIXED TO – and the two differ for Cassini relative to Saturn expressed in IAU_JUPITER. A position only ever needs the origin, so the name is spent on that. frame= the frame's name. Required in practice: a position has to be expressed in SOME frame. surface= the ellipsoid the detic and graphic systems measure against. fixed= true when the frame does not rotate. system= all six, including detic and graphic. sysorder= which canonical direction each stored component holds.
Detic and graphic do not share a component order. Detic is (lon, lat, height) and graphic is (lat, lon, height). Graphic longitude runs west, and since every component order in das2C is right handed, latitude has to come first to keep it that way.
Graphic means west-positive here. Where a body's planetographic longitude runs east the system is the same as detic and should be spelled that way; there is no east-positive spelling of graphic.
A FRAME'S BODY AND A GEOLOC'S BODY ARE DIFFERENT THINGS. Cassini relative to Saturn expressed in IAU_JUPITER: the frame's body is Jupiter, the center is Saturn. das3_spice already keeps them apart – nOutCenter goes to spkezp_c separately from aOutFrame – so they are two parameters and always were, never one name doing double duty.
All of these are plain strings resolved by nobody. There is no registry to check them against; whoever ACTS on a name is the one positioned to say whether it is real.
| #define das_geosys_isEllipsoidal | ( | S | ) | (((S) == DAS_VSYS_DETIC)||((S) == DAS_VSYS_GRAPHIC)) |
Is this an ellipsoidal system, i.e.
one that requires a surface= ?
| #define DAS_FORM_GEOLOC (&das_form_geoloc_vtbl) |
A position measured from the center of some body.
Two of these subtract to give a vector, but they do not add.