CSPICE_DRDPGR computes the Jacobian matrix of the transformation
from planetographic to rectangular coordinates.
body name of the body with which the planetographic coordinate system
[1,m] = size(body); char = class(body)
`body' is used by this routine to look up from the
kernel pool the prime meridian rate coefficient giving
the body's spin sense.
lon planetographic longitude of the input point. This is the angle
between the prime meridian and the meridian containing the input
point. For bodies having prograde (aka direct) rotation, the
direction of increasing longitude is positive west: from the +X
axis of the rectangular coordinate system toward the -Y axis. For
bodies having retrograde rotation, the direction of increasing
longitude is positive east: from the +X axis toward the +Y axis.
[1,n] = size(lon); double = class(lon)
The earth, moon, and sun are exceptions:
planetographic longitude is measured positive east for
The default interpretation of longitude by this
and the other planetographic coordinate conversion
routines can be overridden; see the discussion in
Particulars below for details.
Longitude is measured in radians. On input, the range
of longitude is unrestricted.
lat planetographic latitude of the input point. For a point P on the
reference spheroid, this is the angle between the XY plane and
the outward normal vector at P. For a point P not on the
reference spheroid, the planetographic latitude is that of the
closest point to P on the spheroid.
[1,n] = size(lat); double = class(lat)
Latitude is measured in radians. On input, the range of
latitude is unrestricted.
alt Altitude of point above the reference spheroid. Units of `alt'
must match those of `re'.
[1,n] = size(alt); double = class(alt)
re equatorial radius of a reference spheroid. This spheroid is a
volume of revolution: its horizontal cross sections are circular.
The shape of the spheroid is defined by an equatorial radius
`re' and a polar radius `rp'. Units of `re' must match those of
[1,1] = size(re); double = class(re)
f the flattening coefficient
[1,1] = size(f); double = class(f)
f = (re-rp) / re
where rp is the polar radius of the spheroid. (More importantly
rp = re*(1-f).) The units of `rp' match those of `re'.
jacobi = cspice_drdpgr( body, lon, lat, alt, re, f)
jacobi the matrix of partial derivatives of the conversion from
planetographic to rectangular coordinates evaluated at the
input coordinates. This matrix has the form
If [1,1] = size(lon) then [3,3] = size(jacobi)
If [1,n] = size(lon) then [3,3,n] = size(jacobi)
double = class(jacobi)
| dx/dlon dx/dlat dx/dalt |
| dy/dlon dy/dlat dy/dalt |
| dz/dlon dz/dlat dz/dalt |
evaluated at the input values of 'lon', 'lat' and 'alt'.
It is often convenient to describe the motion of an object in the
planetographic coordinate system. However, when performing
vector computations it's hard to beat rectangular coordinates.
To transform states given with respect to planetographic
coordinates to states with respect to rectangular coordinates,
one makes use of the Jacobian of the transformation between the
Given a state in planetographic coordinates
( lon, lat, alt, dlon, dlat, dalt )
the velocity in rectangular coordinates is given by the matrix
t | t
(dx, dy, dz) = jacobi| * (dlon, dlat, dalt)
This routine computes the matrix
In the planetographic coordinate system, longitude is defined
using the spin sense of the body. Longitude is positive to the
west if the spin is prograde and positive to the east if the spin
is retrograde. The spin sense is given by the sign of the first
degree term of the time-dependent polynomial for the body's prime
meridian Euler angle "W": the spin is retrograde if this term is
negative and prograde otherwise. For the sun, planets, most
natural satellites, and selected asteroids, the polynomial
expression for W may be found in a SPICE PCK kernel.
The earth, moon, and sun are exceptions: planetographic longitude
is measured positive east for these bodies.
If you wish to override the default sense of positive longitude
for a particular body, you can do so by defining the kernel
where <body ID> represents the NAIF ID code of the body. This
variable may be assigned either of the values
For example, you can have this routine treat the longitude
of the earth as increasing to the west using the kernel
BODY399_PGR_POSITIVE_LON = 'WEST'
Normally such assignments are made by placing them in a text
kernel and loading that kernel via cspice_furnsh.
The definition of this kernel variable controls the behavior of
the CSPICE planetographic routines
It does not affect the other SPICE coordinate conversion
For important details concerning this module's function, please refer to
the CSPICE routine drdpgr_c.
-Mice Version 1.0.0, 09-NOV-2012, EDW (JPL), SCK (JPL)
Jacobian of rectangular w.r.t. planetographic coordinates