Same native contract
Status codes, output arrays, and error buffers stay in the C layout on every language.
One reference for the native JME C library and the three language bindings. Every binding calls the same
jme_*
functions and reads the same
JME_*
constants. Nothing is rounded, reshaped, or given a default the C function does not have.
Status codes, output arrays, and error buffers stay in the C layout on every language.
JPL kernels through CALCEPH, Moshier analytical theory, or VSOP87 + ELP2000 + Meeus.
Each language binding must load a library built from the matching C release. Rebuild it when the C sources change.
Start
Install the language you call. The C library is the implementation. PHP, Python, and Dart load a shared library built from it.
| Language | Install | Entry |
|---|---|---|
| C |
cmake -S . -B build && cmake --build build
|
#include "jme/jme.h" |
| PHP |
composer require jayeshmepani/jpl-moshier-ephemeris-php
|
new JmeEph\FFI\JmeEphFFI() |
| Python | pip install jmeph-ffi |
from jpl_moshier_ephemeris import JmeEph
|
| Dart |
dart pub add jpl_moshier_ephemeris_dart
|
import 'package:jpl_moshier_ephemeris_dart/jpl_moshier_ephemeris_dart.dart';
|
Start
Julian day of 2000-01-01 12:00 TT-scale input as UT for
jme_calc_ut
, then the Sun's geometric longitude. The six-value result array is the native layout on every language.
C
#include "jme/jme.h"
#include <stdio.h>
int main(void) {
double jd = jme_julian_day(2000, 1, 1, 12.0, JME_CALENDAR_GREGORIAN);
double xx[6];
char error[256];
int result = jme_calc_ut(jd, JME_BODY_SUN, JME_CALC_TRUE_POSITION, xx, error);
if (result == JME_OK) {
printf("Sun longitude: %.10f\n", xx[0]);
return 0;
}
printf("JME error: %s\n", error);
return 1;
}
PHP
<?php
use FFI;
use JmeEph\FFI\JmeEphFFI;
$jme = new JmeEphFFI();
$jd = $jme->jme_julian_day(2000, 1, 1, 12.0, JmeEphFFI::JME_CALENDAR_GREGORIAN);
$xx = $jme->getFFI()->new('double[6]');
$error = $jme->getFFI()->new('char[256]');
$result = $jme->jme_calc_ut($jd, JmeEphFFI::JME_BODY_SUN, JmeEphFFI::JME_CALC_TRUE_POSITION, $xx, $error);
if ($result === JmeEphFFI::JME_OK) {
echo "Sun longitude: {$xx[0]}\n";
} else {
echo 'JME error: ' . FFI::string($error) . "\n";
}
Python
from jpl_moshier_ephemeris import (
JME_BODY_SUN,
JME_CALC_TRUE_POSITION,
JME_CALENDAR_GREGORIAN,
JME_OK,
JmeEph,
c_double,
create_string_buffer,
)
jme = JmeEph()
jd = jme.jme_julian_day(2000, 1, 1, 12.0, JME_CALENDAR_GREGORIAN)
xx = (c_double * 6)()
err = create_string_buffer(256)
result = jme.jme_calc_ut(jd, JME_BODY_SUN, JME_CALC_TRUE_POSITION, xx, err)
print(xx[0] if result == JME_OK else err.value.decode())
Dart
import 'dart:ffi';
import 'package:ffi/ffi.dart';
import 'package:jpl_moshier_ephemeris_dart/jpl_moshier_ephemeris_dart.dart';
void main() {
final jme = JmeEph();
final jd = jme.bindings.jme_julian_day(2000, 1, 1, 12.0, JME_CALENDAR_GREGORIAN);
using((arena) {
final xx = arena<Double>(6);
final err = arena<Char>(256);
final result = jme.bindings.jme_calc_ut(
jd,
JME_BODY_SUN,
JME_CALC_TRUE_POSITION,
xx,
err,
);
if (result == JME_OK) {
print('Sun longitude: ${xx[0]}');
} else {
print('JME error: ${err.cast<Utf8>().toDartString()}');
}
});
}
Start
The C library chooses the backend. Bindings pass the same token through
jme_set_astro_models
. They do not reimplement the choice.
.bsp
kernel. No analytical fallback.
If the call is omitted, the library also reads
JME_ENGINE
with the same names:
JPL
,
MOSHIER
,
VSOP_ELP_MEEUS
, or
ANALYTICAL
.
C
jme_set_astro_models("ENGINE=JPL", 0);
jme_set_astro_models("ENGINE=MOSHIER", 0);
jme_set_astro_models("ENGINE=VSOP_ELP_MEEUS", 0);
jme_set_astro_models("ENGINE=AUTO", 0);
jme_set_jpl_file("path/to/de440s.bsp");
PHP
$jme->jme_set_astro_models('ENGINE=JPL', 0);
$jme->jme_set_astro_models('ENGINE=MOSHIER', 0);
$jme->jme_set_astro_models('ENGINE=VSOP_ELP_MEEUS', 0);
$jme->jme_set_astro_models('ENGINE=ANALYTICAL', 0);
$jme->jme_set_astro_models('ENGINE=AUTO', 0);
Python
jme.jme_set_astro_models(b"ENGINE=JPL", 0)
jme.jme_set_astro_models(b"ENGINE=MOSHIER", 0)
jme.jme_set_astro_models(b"ENGINE=VSOP_ELP_MEEUS", 0)
jme.jme_set_astro_models(b"ENGINE=AUTO", 0)
Dart
final jme = JmeEph();
jme.configureEngine('JPL', jplFile: '/path/to/de440s.bsp');
jme.configureEngine('MOSHIER');
jme.configureEngine('VSOP_ELP_MEEUS');
jme.configureEngine('AUTO');
Start
This C release is 2.0.0. Each language binding must load a shared library built from the matching C release; rebuild it when the C sources change.
.bsp
file. Strict JPL mode does. Kernels are not inside the C repository or the language packages.
cmake --build
produces
libjme.so
,
libjme.dylib
, or
jme.dll
.
prebuilt-libs
release
. Override with
JME_LIBRARY_PATH
.
jmeph-ffi
wheel contains the same desktop libraries, plus CALCEPH. Override with
JME_LIBRARY_PATH
and
JME_CALCEPH_LIBRARY_PATH
.
Download
de440s.bsp
,
de440.bsp
, or
de441.bsp
from the kernel release.
de441.bsp
is published in parts because the file exceeds GitHub's asset limit. Join the parts in order.
jme_set_ephemeris_path("/path/to/ephe");
jme_set_jpl_file("/path/to/de440s.bsp");
| Platform | Archive | JME library |
|---|---|---|
| Linux x64 | jme-linux-x64.tar.gz |
libjme.so |
| Linux ARM64 | jme-linux-arm64.tar.gz |
libjme.so |
| macOS x64 | jme-macos-x64.tar.gz |
libjme.dylib |
| macOS ARM64 | jme-macos-arm64.tar.gz |
libjme.dylib |
| Windows x64 | jme-windows-x64.zip |
jme.dll |
Language
ISO C17 (
__STDC_VERSION__
201710L
, the same language as ISO/IEC 9899:2018). CMake 3.21 or newer.
JME_VERSION
is
2.0.0
.
JME_VERSION_ID
stays
400
.
cmake -S . -B build -DCMAKE_BUILD_TYPE=Release -DCMAKE_C_FLAGS="-ffp-contract=off"
cmake --build build
ctest --test-dir build --output-on-failure
Release builds keep
-ffp-contract=off
so the floating-point contraction matches the tested results. If CALCEPH is missing, the library still builds and JPL calls return an explicit error.
include/jme/jme.h
and
include/jme/jme_extended.h
.
225
public
jme_*
functions.
478
public
JME_*
constants, plus the include guards
JME_JME_H
and
JME_EXTENDED_H
.
jme_calc_ut
always fills six result slots, including the rates.
Language
Package
jayeshmepani/jpl-moshier-ephemeris-php
. PHP 8.3 or newer, with
ext-ffi
. Class
JmeEph\FFI\JmeEphFFI
exposes each C function as a method of the same name.
extension=ffi
ffi.enable=1
Ubuntu / Debian
sudo apt install php8.3-ffi
# Or for PHP 8.4
sudo apt install php8.4-ffi
RHEL / Fedora
sudo dnf install php-ffi
# or
sudo yum install php-ffi
macOS
# Homebrew PHP already includes FFI
brew install php@8.3
Windows
PHP 8.3 and newer for Windows includes FFI. Enable it in
php.ini
as shown above.
php -r "echo extension_loaded('ffi') ? 'FFI loaded' : 'FFI not loaded';"
php -r "echo ini_get('ffi.enable') ? 'FFI enabled' : 'FFI not enabled';"
Point the loader at a library built from this release with
JME_LIBRARY_PATH
when the bundled file is not the one you want. Kernel files, when you use JPL, go through
jme_set_ephemeris_path
.
$jme = new JmeEph\FFI\JmeEphFFI();
$jme->jme_set_ephemeris_path(__DIR__ . '/ephe');
Language
The PHP package includes a service provider and a facade. Laravel 11 discovers the provider. Older applications register it in
config/app.php
.
'providers' => [
JmeEph\Service\JmeEphServiceProvider::class,
],
'aliases' => [
'JmeEph' => JmeEph\Service\JmeEphFacade::class,
],
'library_path' => env('JME_LIBRARY_PATH'),
'engine' => env('JME_ENGINE', 'AUTO'),
'ephemeris_path' => env('JME_EPHEMERIS_PATH'),
$jd = JmeEph::jme_julian_day(
2000,
1,
1,
12.0,
JmeEph::JME_CALENDAR_GREGORIAN
);
Language
Package
jmeph-ffi
on PyPI, import name
jpl_moshier_ephemeris
. Python 3.10 or newer. Pure ctypes. No extension module. End users do not download a separate binary: the wheel contains
libjme
and CALCEPH for Linux, macOS, and Windows.
JME_LIBRARY_PATH
and
JME_CALCEPH_LIBRARY_PATH
String arguments that the C API takes as
char *
are passed as bytes, for example
b"ENGINE=MOSHIER"
. Output buffers are
create_string_buffer
. Numeric output arrays are
c_double
arrays.
Language
Package
jpl_moshier_ephemeris_dart
. Dart 3.3 or newer and Flutter 3.19 or newer.
JmeEph
loads the library.
JmeBindings
is the direct
jme_*
surface. Constants such as
JME_BODY_SUN
are top-level Dart names.
arm64-v8a
and
x86_64
, with
libjme.so
and
libcalceph.so
.
Jme.xcframework
and
Calceph.xcframework
, device and simulator.
configureEngine
writes
ENGINE=...
into
jme_set_astro_models
. For JPL it also opens the kernel and throws if that open fails. Allocate output pointers with
arena
from
package:ffi
. Do not free memory the C library still owns.
Contract
The counts below are the native header surface. PHP, Python, and Dart generate their declarations from those headers.
225 public jme_* functions
478 public JME_* constants
+ JME_JME_H
+ JME_EXTENDED_H
jme_*
and
JME_*
in every language.
JME_OK
is
0
.
JME_ERR
is
-1
. The error buffer is caller-owned.
jme_calc_ut
writes six doubles. Indexes 0–2 are position. Indexes 3–5 are the rates. The call fills the rates even when the caller does not request
JME_CALC_SPEED
.
JME_*
macro.
Contract
These markdown files stay next to this page. They are the design and validation record for the C library. The language bindings do not keep a second copy.
Reference
Each call is the shared name and argument order. C, PHP, Python, and Dart use that same order. Output arguments are buffers you allocate. A status return is
JME_OK
or
JME_ERR
. The line under the name says what the call does, when to choose it, and where it sits in a program.
This box filters the function list. The sidebar search looks through the whole page and highlights each match.
Function group
Use these after you already have a number. They wrap, compare, or print an angle, a clock time, or a duration. They do not compute a planet.
jme_centiseconds_to_lonlat_string
What it does Formats a signed centisecond angle as a degree-style longitude or latitude string.
When to use it Use this to print a geographic or ecliptic angle you stored in centiseconds.
Where it fits Display only.
jme_centiseconds_to_lonlat_string(cs, buffer)
cs
Angle or time in centiseconds. A full circle or a day of time is 1,296,000 centiseconds.
buffer
Caller-owned character buffer. The call writes the text here.
Returns the text. When you pass buffer, the text is written there and the return points at that buffer.
jme_decimal_hourWhat it does Turns hours, minutes, and seconds into a decimal hour.
When to use it Use this before jme_julian_day, which takes one hour number.
Where it fits Clock entry.
jme_decimal_hour(hour, minute, second)
hour
Whole hours.
minute
Whole minutes.
second
Seconds, including a fraction.
Returns the number described above. A non-finite value means the call could not produce that number.
jme_centiseconds_difference
What it does Returns the separation of two centisecond angles.
When to use it Use this to test whether two longitudes stored in centiseconds have met.
Where it fits Angle storage. The signed form keeps the direction.
jme_centiseconds_difference(p1, p2)
p1
First angle in centiseconds.
p2
Second angle in centiseconds.
Returns the integer result named above. A status-style return uses JME_OK and JME_ERR.
jme_centiseconds_difference_signed
What it does Returns the signed separation of two centisecond angles.
When to use it Use this when the direction around the circle matters.
Where it fits The unsigned pair is jme_centiseconds_difference.
jme_centiseconds_difference_signed(p1, p2)
p1
First angle in centiseconds.
p2
Second angle in centiseconds.
Returns the integer result named above. A status-style return uses JME_OK and JME_ERR.
jme_centiseconds_normalize
What it does Wraps a centisecond angle onto one full circle.
When to use it Use this before you store or compare an angle that may have wound past a full turn.
Where it fits Any centisecond longitude.
jme_centiseconds_normalize(p)
p
Angle in centiseconds to wrap onto one full circle.
Returns the integer result named above. A status-style return uses JME_OK and JME_ERR.
jme_centiseconds_round_second
What it does Rounds a centisecond angle to the nearest whole second.
When to use it Use this only for display rounding. Do not feed it back into a calculation you want at full precision.
Where it fits A printed degree-minute-second field.
jme_centiseconds_round_second(x)
x
Centiseconds to round to the nearest whole second.
Returns the integer result named above. A status-style return uses JME_OK and JME_ERR.
jme_jd_difference_seconds
What it does Returns the signed number of seconds from one Julian date to another.
When to use it Use this to measure a duration between two instants you already hold as Julian dates.
Where it fits jd_end minus jd_start, in seconds.
jme_jd_difference_seconds(jd_end, jd_start)
jd_end
End Julian date.
jd_start
Julian date to search from. The matching time scale is the one in the function name.
Returns the number described above. A non-finite value means the call could not produce that number.
Function group
Call these at setup, or when you need an orbital element set. They change or read a library setting that later calculations inherit.
jme_closeWhat it does Releases resources the library is holding, including an open kernel.
When to use it Call it when the process is finished with ephemeris calls.
Where it fits Shutdown. Later calls need a new setup.
jme_close()
Returns nothing. The call writes its output arguments, or it changes a library setting for later calls.
jme_get_orbital_elements
What it does Writes the orbital elements of a body at Terrestrial Time.
When to use it Use this when you need the element set itself, not a longitude.
Where it fits An orbit panel. flags follow the calculation flags.
jme_get_orbital_elements(jd_et, body, flags, elem, error)
jd_et
Terrestrial Time (TT) as a Julian date.
body
Body id such as JME_BODY_SUN. The body constants list every id.
flags
Flag bits for this call. Pass 0 for the default. The constant group for this family lists the bits.
elem
Caller-owned array of orbital elements.
error
Caller-owned text buffer. On failure the library writes the reason here.
Returns JME_OK (0) or JME_ERR (-1). On JME_ERR, read error. The output arguments are written as the description says.
jme_set_astro_modelsWhat it does Sets engine and model tokens for later calculations.
When to use it Call it at startup to choose JPL, Moshier, VSOP plus ELP, or AUTO, and to name precession or nutation models.
Where it fits Before jme_calc. The checked form rejects an unknown token and leaves the old setting in place.
jme_set_astro_models(models, flags)
models
Text tokens such as ENGINE=JPL or ENGINE=MOSHIER. The engine section lists the tokens.
flags
Flag bits for this call. Pass 0 for the default. The constant group for this family lists the bits.
Returns nothing. The call writes its output arguments, or it changes a library setting for later calls.
jme_get_astro_modelsWhat it does Writes the current model tokens into models.
When to use it Call it to show or save the active engine and model choices.
Where it fits After jme_set_astro_models.
jme_get_astro_models(models, flags)
models
Text tokens such as ENGINE=JPL or ENGINE=MOSHIER. The engine section lists the tokens.
flags
Flag bits for this call. Pass 0 for the default. The constant group for this family lists the bits.
Returns the integer result named above. A status-style return uses JME_OK and JME_ERR.
jme_set_lapse_rateWhat it does Sets the temperature lapse rate used by extended refraction.
When to use it Call it when the observer is high enough that sea-level weather is the wrong profile.
Where it fits Before jme_refract_extended, if you do not pass the lapse on that call.
jme_set_lapse_rate(lapse_rate)
lapse_rate
Temperature lapse rate. jme_refract_extended uses it when the observer is not at sea level.
Returns nothing. The call writes its output arguments, or it changes a library setting for later calls.
jme_set_interpolate_nut
What it does Turns nutation interpolation on or off for later orientation calls.
When to use it Use this only when you deliberately want the interpolated nutation series.
Where it fits A setup call. Leave it off unless you know you want that interpolation.
jme_set_interpolate_nut(on)
on
Non-zero turns the option on. Zero turns it off.
Returns nothing. The call writes its output arguments, or it changes a library setting for later calls.
jme_get_tid_accWhat it does Returns the tidal acceleration currently applied to historical Delta-T.
When to use it Call it to record which JME_TIME_TIDAL_* choice is active.
Where it fits After jme_set_tid_acc.
jme_get_tid_acc()
Returns the number described above. A non-finite value means the call could not produce that number.
jme_set_tid_accWhat it does Selects the tidal acceleration used with historical Delta-T.
When to use it Call it when a JPL ephemeris requires its matching tidal value. JME_TIME_TIDAL_DE441 has no published historical acceleration, so pre-1955 Delta-T then returns a non-finite value and an error.
Where it fits Setup, before long-range Delta-T. JME_TIME_TIDAL_AUTOMATIC applies no extra correction.
jme_set_tid_acc(t_acc)
t_acc
Tidal acceleration selector, usually a JME_TIME_TIDAL_* constant, or a numeric acceleration when you set one directly.
Returns nothing. The call writes its output arguments, or it changes a library setting for later calls.
jme_days_in_monthWhat it does Returns how many days the month has in that year and calendar.
When to use it Use this to build a month grid or to cap a day field.
Where it fits Date entry.
jme_days_in_month(year, month, calendar)
year
Calendar year. Astronomical year numbering, so 1 BCE is year 0.
month
Month number from 1 to 12.
calendar
JME_CALENDAR_GREGORIAN or JME_CALENDAR_JULIAN.
Returns the integer result named above. A status-style return uses JME_OK and JME_ERR.
jme_refractWhat it does Applies atmospheric refraction to an altitude angle.
When to use it Use this to turn a true altitude into an apparent one, or the reverse, at the observer's pressure and temperature.
Where it fits calc_flag JME_COORD_APPARENT_TO_TRUE subtracts refraction. JME_COORD_TRUE_TO_APPARENT adds it. Below about -1 degree, or with no pressure, the altitude is returned unchanged.
jme_refract(altitude, pressure, temperature, calc_flag)
altitude
Altitude angle in degrees.
pressure
Air pressure in millibars. The sea-level default used by the refraction formula is 1010.
temperature
Air temperature in degrees Celsius.
calc_flag
JME_COORD_APPARENT_TO_TRUE removes refraction. JME_COORD_TRUE_TO_APPARENT adds it.
Returns the corrected altitude in degrees. Extended refraction also fills out when you pass it.
jme_refract_extendedWhat it does Applies refraction with observer height and a lapse rate, and can return the intermediate weather.
When to use it Use this when the observer is not at the pressure you measured at sea level.
Where it fits out, when present, receives corrected altitude, refraction, local pressure, and local temperature.
jme_refract_extended(altitude, geoalt, pressure, temperature, lapse_rate, calc_flag, out)
altitude
Altitude angle in degrees.
geoalt
Observer height in metres, used to adjust pressure and temperature.
pressure
Air pressure in millibars. The sea-level default used by the refraction formula is 1010.
temperature
Air temperature in degrees Celsius.
lapse_rate
Temperature lapse rate. jme_refract_extended uses it when the observer is not at sea level.
calc_flag
JME_COORD_APPARENT_TO_TRUE removes refraction. JME_COORD_TRUE_TO_APPARENT adds it.
out
Optional extra outputs. For extended refraction this is four numbers: corrected altitude, refraction, local pressure, local temperature.
Returns the corrected altitude in degrees. Extended refraction also fills out when you pass it.
Function group
Use these when you already have a place or a Cartesian state and you need another frame: ecliptic, equator, horizon, or a rotation matrix.
jme_centiseconds_to_degree_string
What it does Formats a centisecond angle as a degree string.
When to use it Use this for the same stored angle when you want degrees rather than a coordinate sign convention.
Where it fits Display only.
jme_centiseconds_to_degree_string(cs, buffer)
cs
Angle or time in centiseconds. A full circle or a day of time is 1,296,000 centiseconds.
buffer
Caller-owned character buffer. The call writes the text here.
Returns the text. When you pass buffer, the text is written there and the return points at that buffer.
jme_get_obliquityWhat it does Returns the obliquity of the ecliptic at Terrestrial Time for a chosen model.
When to use it Use this when a house or coordinate call asks you to supply eps, or when you want to display it.
Where it fits Pass the result into the RAMC house calls.
jme_get_obliquity(jd_et, model, eps, error)
jd_et
Terrestrial Time (TT) as a Julian date.
model
Model id from the JME_MODEL_* or JME_SIDEREAL_* constants, depending on the call.
eps
Obliquity of the ecliptic, in degrees, at the date you are using.
error
Caller-owned text buffer. On failure the library writes the reason here.
Returns JME_OK (0) or JME_ERR (-1). On JME_ERR, read error. The output arguments are written as the description says.
jme_get_frame_bias_matrix
What it does Writes the frame-bias rotation for a bias model.
When to use it Use this when you rotate vectors between the catalogue frame and the equinox yourself.
Where it fits Before your own matrix multiply. m is nine numbers.
jme_get_frame_bias_matrix(model, m)
model
Model id from the JME_MODEL_* or JME_SIDEREAL_* constants, depending on the call.
m
Caller-owned rotation matrix, nine numbers, row by row.
Returns the integer result named above. A status-style return uses JME_OK and JME_ERR.
jme_get_nutationWhat it does Returns nutation in longitude and obliquity at Terrestrial Time.
When to use it Use this when you apply nutation yourself, or when you need those angles for apparent sidereal time.
Where it fits dpsi and deps receive the two angles.
jme_get_nutation(jd_et, model, dpsi, deps, error)
jd_et
Terrestrial Time (TT) as a Julian date.
model
Model id from the JME_MODEL_* or JME_SIDEREAL_* constants, depending on the call.
dpsi
Receives nutation in longitude.
deps
Receives nutation in obliquity.
error
Caller-owned text buffer. On failure the library writes the reason here.
Returns JME_OK (0) or JME_ERR (-1). On JME_ERR, read error. The output arguments are written as the description says.
jme_get_precession_matrix
What it does Writes the precession rotation from one TT date to another.
When to use it Use this to move a vector between two epochs.
Where it fits m is nine numbers. The model selects the precession series.
jme_get_precession_matrix(jd_start, jd_end, model, m)
jd_start
TT Julian date at the start of the precession interval.
jd_end
TT Julian date at the end of the precession interval.
model
Model id from the JME_MODEL_* or JME_SIDEREAL_* constants, depending on the call.
m
Caller-owned rotation matrix, nine numbers, row by row.
Returns the integer result named above. A status-style return uses JME_OK and JME_ERR.
jme_get_nutation_matrix
What it does Builds the nutation matrix from nutation angles and obliquity, in radians.
When to use it Use this after jme_get_nutation when you need the matrix rather than the two angles.
Where it fits A coordinate pipeline you are writing yourself.
jme_get_nutation_matrix(dpsi_rad, deps_rad, eps_rad, m)
dpsi_rad
Nutation in longitude, in radians.
deps_rad
Nutation in obliquity, in radians.
eps_rad
Obliquity, in radians.
m
Caller-owned rotation matrix, nine numbers, row by row.
Returns nothing. The call writes its output arguments, or it changes a library setting for later calls.
jme_matrix_identityWhat it does Writes a 3 by 3 identity matrix.
When to use it Use this as the starting matrix before you multiply in precession or nutation.
Where it fits m is nine numbers.
jme_matrix_identity(m)
m
Caller-owned rotation matrix, nine numbers, row by row.
Returns nothing. The call writes its output arguments, or it changes a library setting for later calls.
jme_matrix_multiplyWhat it does Multiplies two 3 by 3 matrices into out.
When to use it Use this to combine frame rotations.
Where it fits A coordinate pipeline. out must not be assumed to alias a or b unless you have checked that.
jme_matrix_multiply(a, b, out)
a
First rotation matrix, nine numbers.
b
Second rotation matrix, nine numbers.
out
Optional extra outputs. For extended refraction this is four numbers: corrected altitude, refraction, local pressure, local temperature.
Returns nothing. The call writes its output arguments, or it changes a library setting for later calls.
jme_matrix_rotate_xWhat it does Writes the rotation matrix about the x axis.
When to use it Use this when you build a rotation the library does not already provide.
Where it fits angle_rad is radians. m receives nine numbers.
jme_matrix_rotate_x(angle_rad, m)
angle_rad
Rotation angle in radians.
m
Caller-owned rotation matrix, nine numbers, row by row.
Returns nothing. The call writes its output arguments, or it changes a library setting for later calls.
jme_matrix_rotate_yWhat it does Writes the rotation matrix about the y axis.
When to use it Use this for the y component of a rotation you are composing.
Where it fits Same layout as jme_matrix_rotate_x.
jme_matrix_rotate_y(angle_rad, m)
angle_rad
Rotation angle in radians.
m
Caller-owned rotation matrix, nine numbers, row by row.
Returns nothing. The call writes its output arguments, or it changes a library setting for later calls.
jme_matrix_rotate_zWhat it does Writes the rotation matrix about the z axis.
When to use it Use this for a rotation in the reference plane, such as a longitude shift you apply yourself.
Where it fits Same layout as jme_matrix_rotate_x.
jme_matrix_rotate_z(angle_rad, m)
angle_rad
Rotation angle in radians.
m
Caller-owned rotation matrix, nine numbers, row by row.
Returns nothing. The call writes its output arguments, or it changes a library setting for later calls.
jme_degree_midpointWhat it does Returns the midpoint of two angles in degrees, on the short arc.
When to use it Use this for the middle of a nakshatra, a house, or an arc.
Where it fits Both inputs are degrees.
jme_degree_midpoint(x1, x0)
x1
First angle in degrees.
x0
Second angle in degrees.
Returns the number described above. A non-finite value means the call could not produce that number.
jme_degree_normalizeWhat it does Wraps a degree angle onto one full circle.
When to use it Use this before you compare a longitude with a boundary.
Where it fits Any ecliptic or equatorial degree measure.
jme_degree_normalize(x)
x
Angle in degrees to wrap onto one full circle.
Returns the number described above. A non-finite value means the call could not produce that number.
jme_degrees_to_hoursWhat it does Converts degrees of angle to hours of right ascension or time.
When to use it Use this when a sidereal-time or right-ascension field must be shown in hours.
Where it fits 15 degrees become 1 hour.
jme_degrees_to_hours(degrees)
degrees
Angle in degrees.
Returns the number described above. A non-finite value means the call could not produce that number.
jme_degrees_to_radians
What it does Converts degrees to radians.
When to use it Use this at the boundary of a routine that wants radians, such as the nutation matrix.
Where it fits The reverse is jme_radians_to_degrees.
jme_degrees_to_radians(degrees)
degrees
Angle in degrees.
Returns the number described above. A non-finite value means the call could not produce that number.
jme_degrees_difference
What it does Returns the separation of two degree angles.
When to use it Use this to measure a house width or a distance along the ecliptic without the sign.
Where it fits The signed form keeps the direction.
jme_degrees_difference(p1, p2)
p1
First angle in degrees.
p2
Second angle in degrees.
Returns the number described above. A non-finite value means the call could not produce that number.
jme_degrees_difference_signed
What it does Returns the signed separation of two degree angles.
When to use it Use this when you need to know which way the motion goes.
Where it fits The unsigned pair is jme_degrees_difference.
jme_degrees_difference_signed(p1, p2)
p1
First angle in degrees.
p2
Second angle in degrees.
Returns the number described above. A non-finite value means the call could not produce that number.
jme_ecliptic_to_equatorial
What it does Converts ecliptic longitude and latitude to right ascension and declination.
When to use it Use this when you have an ecliptic place and you need the equator of date.
Where it fits You supply the obliquity eps. The reverse is jme_equatorial_to_ecliptic.
jme_ecliptic_to_equatorial(lon, lat, eps, ra, dec)
lon
Longitude in degrees. East is positive when this is a place. For an angle helper it is the ecliptic or equatorial longitude the call names.
lat
Latitude in degrees. North is positive when this is a place.
eps
Obliquity of the ecliptic, in degrees, at the date you are using.
ra
Receives right ascension.
dec
Declination in degrees, or the variable that receives it.
Returns nothing. The call writes its output arguments, or it changes a library setting for later calls.
jme_equatorial_to_ecliptic
What it does Converts right ascension and declination to ecliptic longitude and latitude.
When to use it Use this when a star or a vector is equatorial and the chart is ecliptic.
Where it fits You supply eps.
jme_equatorial_to_ecliptic(ra, dec, eps, lon, lat)
ra
Receives right ascension.
dec
Declination in degrees, or the variable that receives it.
eps
Obliquity of the ecliptic, in degrees, at the date you are using.
lon
Longitude in degrees. East is positive when this is a place. For an angle helper it is the ecliptic or equatorial longitude the call names.
lat
Latitude in degrees. North is positive when this is a place.
Returns nothing. The call writes its output arguments, or it changes a library setting for later calls.
jme_spherical_angular_separation
What it does Returns the great-circle angle between two spherical positions.
When to use it Use this for the distance on the sky between two longitudes and latitudes.
Where it fits Conjunction tests and angular separation. The unit is degrees.
jme_spherical_angular_separation(lon1, lat1, lon2, lat2)
lon1
Longitude of the first point, in degrees.
lat1
Latitude of the first point, in degrees.
lon2
Longitude of the second point, in degrees.
lat2
Latitude of the second point, in degrees.
Returns the number described above. A non-finite value means the call could not produce that number.
jme_spherical_position_angle
What it does Returns the position angle of the second point from the first.
When to use it Use this when you need the direction of one body from another on the sky.
Where it fits The result is a degree angle.
jme_spherical_position_angle(lon1, lat1, lon2, lat2)
lon1
Longitude of the first point, in degrees.
lat1
Latitude of the first point, in degrees.
lon2
Longitude of the second point, in degrees.
lat2
Latitude of the second point, in degrees.
Returns the number described above. A non-finite value means the call could not produce that number.
jme_radian_midpointWhat it does Returns the midpoint of two radian angles on the short arc.
When to use it Use this when the surrounding math is already in radians.
Where it fits The degree form is jme_degree_midpoint.
jme_radian_midpoint(x1, x0)
x1
First angle in radians.
x0
Second angle in radians.
Returns the number described above. A non-finite value means the call could not produce that number.
jme_radian_normalizeWhat it does Wraps a radian angle onto one full turn.
When to use it Use this before a comparison in radians.
Where it fits The degree form is jme_degree_normalize.
jme_radian_normalize(x)
x
Angle in radians to wrap onto one full turn.
Returns the number described above. A non-finite value means the call could not produce that number.
jme_radians_to_degrees
What it does Converts radians to degrees.
When to use it Use this to present a radian result in degrees.
Where it fits The reverse is jme_degrees_to_radians.
jme_radians_to_degrees(radians)
radians
Angle in radians.
Returns the number described above. A non-finite value means the call could not produce that number.
jme_radians_difference_signed
What it does Returns the signed separation of two radian angles.
When to use it Use this when both angles are already in radians and the direction matters.
Where it fits The degree form is jme_degrees_difference_signed.
jme_radians_difference_signed(p1, p2)
p1
First angle in radians.
p2
Second angle in radians.
Returns the number described above. A non-finite value means the call could not produce that number.
jme_hours_normalizeWhat it does Wraps a time in hours onto one day.
When to use it Use this after adding hours that may have passed 24.
Where it fits Sidereal time and decimal hours.
jme_hours_normalize(hours)
hours
Hours to wrap onto one day.
Returns the number described above. A non-finite value means the call could not produce that number.
jme_hours_to_degreesWhat it does Converts hours of right ascension or time to degrees.
When to use it Use this when a sidereal time in hours must enter a house call that wants degrees.
Where it fits 1 hour becomes 15 degrees.
jme_hours_to_degrees(hours)
hours
Receives sidereal time in hours.
Returns the number described above. A non-finite value means the call could not produce that number.
jme_split_degreeWhat it does Splits a decimal degree angle into sign, degrees, minutes, seconds, and the fraction of a second.
When to use it Use this to print a longitude without building the string yourself.
Where it fits roundflag ROUND_DEG, ROUND_MIN, or ROUND_SEC chooses the rounding. The other angle-format ids are not applied here.
jme_split_degree(ddeg, roundflag, ideg, imin, isec, dsecfr, isgn)
ddeg
Angle in decimal degrees to split into sign, degrees, minutes, and seconds.
roundflag
Rounding choice. JME_ANGLE_FORMAT_ROUND_DEG, ROUND_MIN, or ROUND_SEC. The other format ids are not applied by this call.
ideg
Receives the degree part.
imin
Receives the minute part.
isec
Receives the whole-second part.
dsecfr
Receives the fraction of the second.
isgn
Receives the sign: 1 or -1.
Returns nothing. The call writes its output arguments, or it changes a library setting for later calls.
Function group
Use these to search for an eclipse or an occultation, or to describe one whose time you already know. A position call will not return contact times.
jme_sol_eclipse_where
What it does Finds where on Earth a solar eclipse is central at a Universal Time.
When to use it Use this when you have a time inside an eclipse and you need the geographic path point.
Where it fits Global eclipse maps. For the next eclipse, search first with jme_sol_eclipse_when_glob.
jme_sol_eclipse_where(jd_ut, flags, geopos, attr, error)
jd_ut
Universal Time as a Julian date. Use this when the clock you have is UT.
flags
Reserved argument; this function currently ignores it. Pass 0.
geopos
Observer longitude, latitude, and height, in that order, in degrees and metres.
attr
Caller-owned array that receives the circumstance values for this call.
error
Caller-owned text buffer. On failure the library writes the reason here.
Returns a JME_ECLIPSE_SOLAR_* classification on success, or JME_ERR (-1). Test rc < 0 for failure. The output arguments are written as the description says.
jme_sol_eclipse_howWhat it does Computes how a solar eclipse appears at one place and Universal Time.
When to use it Use this when the observer is fixed and you want magnitude and the related attributes.
Where it fits A local eclipse page. geopos is that place.
jme_sol_eclipse_how(jd_ut, flags, geopos, attr, error)
jd_ut
Universal Time as a Julian date. Use this when the clock you have is UT.
flags
Reserved argument; this function currently ignores it. Pass 0.
geopos
Observer longitude, latitude, and height, in that order, in degrees and metres.
attr
Caller-owned array that receives the circumstance values for this call.
error
Caller-owned text buffer. On failure the library writes the reason here.
Returns a JME_ECLIPSE_SOLAR_* classification on success, or JME_ERR (-1). Test rc < 0 for failure. The output arguments are written as the description says.
jme_sol_eclipse_when_loc
What it does Searches for the next or previous solar eclipse at one place.
When to use it Use this when the question is 'when is the eclipse visible here'.
Where it fits A local calendar. backward searches earlier. tret receives the contact times.
jme_sol_eclipse_when_loc(jd_start, flags, geopos, tret, attr, backward, error)
jd_start
Julian date to search from. The matching time scale is the one in the function name.
flags
Reserved argument; this function currently ignores it. Pass 0.
geopos
Observer longitude, latitude, and height, in that order, in degrees and metres.
tret
Caller-owned array of Julian dates. The description says which index is which event.
attr
Caller-owned array that receives the circumstance values for this call.
backward
Search direction. Non-zero searches before jd_start. Zero searches after it.
error
Caller-owned text buffer. On failure the library writes the reason here.
Returns a JME_ECLIPSE_SOLAR_* classification on success, or JME_ERR (-1). Test rc < 0 for failure. The output arguments are written as the description says.
jme_sol_eclipse_when_glob
What it does Searches for the next or previous solar eclipse anywhere on Earth.
When to use it Use this to build a worldwide eclipse list.
Where it fits Start from jd_start and walk forward, or backward. Then call the where and how functions for a chosen instant.
jme_sol_eclipse_when_glob(jd_start, flags, epheflag, tret, backward, error)
jd_start
Julian date to search from. The matching time scale is the one in the function name.
flags
Reserved argument; this function currently ignores it. Pass 0.
epheflag
Eclipse-type filter: 0 for any, or JME_ECLIPSE_SOLAR_TOTAL, _ANNULAR, _HYBRID, _PARTIAL, _CENTRAL or _NONCENTRAL.
tret
Caller-owned array of Julian dates. The description says which index is which event.
backward
Search direction. Non-zero searches before jd_start. Zero searches after it.
error
Caller-owned text buffer. On failure the library writes the reason here.
Returns a JME_ECLIPSE_SOLAR_* classification on success, or JME_ERR (-1). Test rc < 0 for failure. The output arguments are written as the description says.
jme_lun_eclipse_howWhat it does Computes how a lunar eclipse appears at one place and Universal Time.
When to use it Use this for magnitude and contact data of a lunar eclipse at a known time.
Where it fits A local lunar-eclipse page.
jme_lun_eclipse_how(jd_ut, flags, geopos, attr, error)
jd_ut
Universal Time as a Julian date. Use this when the clock you have is UT.
flags
Reserved argument; this function currently ignores it. Pass 0.
geopos
Observer longitude, latitude, and height, in that order, in degrees and metres.
attr
Caller-owned array that receives the circumstance values for this call.
error
Caller-owned text buffer. On failure the library writes the reason here.
Returns a JME_ECLIPSE_LUNAR_* classification on success, or JME_ERR (-1). Test rc < 0 for failure. The output arguments are written as the description says.
jme_lun_eclipse_when_loc
What it does Searches for the next or previous lunar eclipse at one place.
When to use it Use this when the observer is fixed.
Where it fits A local calendar. The global search is jme_lun_eclipse_when.
jme_lun_eclipse_when_loc(jd_start, flags, geopos, tret, attr, backward, error)
jd_start
Julian date to search from. The matching time scale is the one in the function name.
flags
Reserved argument; this function currently ignores it. Pass 0.
geopos
Observer longitude, latitude, and height, in that order, in degrees and metres.
tret
Caller-owned array of Julian dates. The description says which index is which event.
attr
Caller-owned array that receives the circumstance values for this call.
backward
Search direction. Non-zero searches before jd_start. Zero searches after it.
error
Caller-owned text buffer. On failure the library writes the reason here.
Returns a JME_ECLIPSE_LUNAR_* classification on success, or JME_ERR (-1). Test rc < 0 for failure. The output arguments are written as the description says.
jme_lun_eclipse_whenWhat it does Searches for the next or previous lunar eclipse worldwide.
When to use it Use this to list lunar eclipses before you care about one city.
Where it fits A worldwide eclipse index.
jme_lun_eclipse_when(jd_start, flags, iflag, tret, backward, error)
jd_start
Julian date to search from. The matching time scale is the one in the function name.
flags
Reserved argument; this function currently ignores it. Pass 0.
iflag
Eclipse-type filter: 0 for any, or JME_ECLIPSE_LUNAR_TOTAL, _PARTIAL or _PENUMBRAL.
tret
Caller-owned array of Julian dates. The description says which index is which event.
backward
Search direction. Non-zero searches before jd_start. Zero searches after it.
error
Caller-owned text buffer. On failure the library writes the reason here.
Returns a JME_ECLIPSE_LUNAR_* classification on success, or JME_ERR (-1). Test rc < 0 for failure. The output arguments are written as the description says.
jme_lun_occult_whereWhat it does Finds where a lunar occultation of a body or star is central at a Universal Time.
When to use it Use this when the time is known and you need the geographic point.
Where it fits Occultation maps. starname is empty for a planet.
jme_lun_occult_where(jd_ut, body, starname, flags, geopos, attr, error)
jd_ut
Universal Time as a Julian date. Use this when the clock you have is UT.
body
Body id such as JME_BODY_SUN. The body constants list every id.
starname
Star name. Use an empty string when the call is for a solar-system body.
flags
Reserved argument; this function currently ignores it. Pass 0.
geopos
Observer longitude, latitude, and height, in that order, in degrees and metres.
attr
Caller-owned array that receives the circumstance values for this call.
error
Caller-owned text buffer. On failure the library writes the reason here.
Returns JME_OK (0) or JME_ERR (-1). On JME_ERR, read error. The output arguments are written as the description says.
jme_lun_occult_when_loc
What it does Searches for the next or previous occultation by the Moon at one place.
When to use it Use this for 'when does the Moon cover this body here'.
Where it fits A local occultation list. Pass the body, or a star name.
jme_lun_occult_when_loc(jd_start, body, starname, flags, geopos, tret, attr, backward, error)
jd_start
Julian date to search from. The matching time scale is the one in the function name.
body
Body id such as JME_BODY_SUN. The body constants list every id.
starname
Star name. Use an empty string when the call is for a solar-system body.
flags
Reserved argument; this function currently ignores it. Pass 0.
geopos
Observer longitude, latitude, and height, in that order, in degrees and metres.
tret
Caller-owned array of Julian dates. The description says which index is which event.
attr
Caller-owned array that receives the circumstance values for this call.
backward
Search direction. Non-zero searches before jd_start. Zero searches after it.
error
Caller-owned text buffer. On failure the library writes the reason here.
Returns JME_OK (0) or JME_ERR (-1). On JME_ERR, read error. The output arguments are written as the description says.
jme_lun_occult_when_glob
What it does Searches for the next or previous lunar occultation anywhere on Earth.
When to use it Use this for a worldwide occultation list.
Where it fits tret[0] is greatest occultation. Indexes 2 and 3 are the outer contacts. Stars are treated as points at infinity.
jme_lun_occult_when_glob(jd_start, body, starname, flags, iflag, tret, backward, error)
jd_start
Julian date to search from. The matching time scale is the one in the function name.
body
Body id such as JME_BODY_SUN. The body constants list every id.
starname
Star name. Use an empty string when the call is for a solar-system body.
flags
Reserved argument; this function currently ignores it. Pass 0.
iflag
Reserved search-flag argument; this function currently ignores it.
tret
Event times. Index 0 is greatest occultation. Indexes 2 and 3 are the first and last contact anywhere on Earth. Indexes 4 and 5 are the total phase when
there is one. Indexes 6 and 7 are the central phase when there is one.
backward
Search direction. Non-zero searches before jd_start. Zero searches after it.
error
Caller-owned text buffer. On failure the library writes the reason here.
Returns JME_OK (0) or JME_ERR (-1). On JME_ERR, read error. The output arguments are written as the description says.
Function group
Use these for a named star, or for the version and file paths of the library. Star magnitude does not need a date. Star position does.
jme_versionWhat it does Copies the library version string into buffer.
When to use it Call it once at startup when you need to show or record which JME build is loaded.
Where it fits Any program, before you trust a result. This release's string is 2.0.0.
jme_version(buffer, buffer_size)
buffer
Caller-owned character buffer. The call writes the text here.
buffer_size
Size of buffer, in bytes, including room for the terminating zero.
Returns the text. When you pass buffer, the text is written there and the return points at that buffer.
jme_ephemeris_pathWhat it does Returns the directory the library searches for ephemeris files.
When to use it Call it when you need to show or check the path that was set.
Where it fits After jme_set_ephemeris_path, or to read the default.
jme_ephemeris_path()
Returns the text. When you pass buffer, the text is written there and the return points at that buffer.
jme_set_ephemeris_path
What it does Sets the directory used to resolve a relative kernel name from jme_set_jpl_file(). Changing it closes any open kernel.
When to use it Call it at startup when the kernel file does not sit on the default path.
Where it fits Before a JPL call that reads a kernel file.
jme_set_ephemeris_path(path)
path
Filesystem path. For a kernel this is the .bsp file or the directory that holds it.
Returns nothing. The call writes its output arguments, or it changes a library setting for later calls.
jme_fixstarWhat it does Computes a named fixed star at Terrestrial Time.
When to use it Use this when you have TT and a catalogue name.
Where it fits Star longitudes on a chart. The UT form is jme_fixstar_ut.
jme_fixstar(star, jd_et, flags, results, error)
star
Star name in the fixed-star catalogue.
jd_et
Terrestrial Time (TT) as a Julian date.
flags
Flag bits for this call. Pass 0 for the default. The constant group for this family lists the bits.
results
Caller-owned output array. Allocate it before the call.
error
Caller-owned text buffer. On failure the library writes the reason here.
Returns JME_OK (0) or JME_ERR (-1). On JME_ERR, read error. The output arguments are written as the description says.
jme_fixstar_utWhat it does Computes a named fixed star at Universal Time.
When to use it Use this when the clock is UT.
Where it fits The usual star position. Magnitude alone is jme_fixstar_mag.
jme_fixstar_ut(star, jd_ut, flags, results, error)
star
Star name in the fixed-star catalogue.
jd_ut
Universal Time as a Julian date. Use this when the clock you have is UT.
flags
Flag bits for this call. Pass 0 for the default. The constant group for this family lists the bits.
results
Caller-owned output array. Allocate it before the call.
error
Caller-owned text buffer. On failure the library writes the reason here.
Returns JME_OK (0) or JME_ERR (-1). On JME_ERR, read error. The output arguments are written as the description says.
jme_fixstar_magWhat it does Looks up the visual magnitude of a named star.
When to use it Use this when you need brightness and not a position.
Where it fits A star list. It does not depend on the date.
jme_fixstar_mag(star, mag, error)
star
Star name in the fixed-star catalogue.
mag
Receives the visual magnitude.
error
Caller-owned text buffer. On failure the library writes the reason here.
Returns JME_OK (0) or JME_ERR (-1). On JME_ERR, read error. The output arguments are written as the description says.
jme_fixstar2What it does Computes a named fixed star at Terrestrial Time, using the longer star-name interface.
When to use it Use this when the catalogue key does not fit the shorter star argument.
Where it fits Same result family as jme_fixstar. Prefer it for long traditional names.
jme_fixstar2(star, jd_et, flags, results, error)
star
Star name in the fixed-star catalogue.
jd_et
Terrestrial Time (TT) as a Julian date.
flags
Flag bits for this call. Pass 0 for the default. The constant group for this family lists the bits.
results
Caller-owned output array. Allocate it before the call.
error
Caller-owned text buffer. On failure the library writes the reason here.
Returns JME_OK (0) or JME_ERR (-1). On JME_ERR, read error. The output arguments are written as the description says.
jme_fixstar2_utWhat it does Computes a named fixed star at Universal Time, using the longer star-name interface.
When to use it Use this when the clock is UT and the name is long.
Where it fits The UT pair of jme_fixstar2.
jme_fixstar2_ut(star, jd_ut, flags, results, error)
star
Star name in the fixed-star catalogue.
jd_ut
Universal Time as a Julian date. Use this when the clock you have is UT.
flags
Flag bits for this call. Pass 0 for the default. The constant group for this family lists the bits.
results
Caller-owned output array. Allocate it before the call.
error
Caller-owned text buffer. On failure the library writes the reason here.
Returns JME_OK (0) or JME_ERR (-1). On JME_ERR, read error. The output arguments are written as the description says.
jme_fixstar2_magWhat it does Looks up magnitude through the longer star-name interface.
When to use it Use this for a long catalogue key when you only need brightness.
Where it fits A star list, with no date.
jme_fixstar2_mag(star, mag, error)
star
Star name in the fixed-star catalogue.
mag
Receives the visual magnitude.
error
Caller-owned text buffer. On failure the library writes the reason here.
Returns JME_OK (0) or JME_ERR (-1). On JME_ERR, read error. The output arguments are written as the description says.
jme_library_pathWhat it does Returns the filesystem path of the loaded library, when the platform provides it.
When to use it Use this in a diagnostic when several builds are installed and you need to see which file ran.
Where it fits A support screen, not a calculation.
jme_library_path()
Returns the literal library identifier "jme". It is not a filesystem path.
Function group
Use these for nodes and apsides, a distance range, or a small Julian-date adjustment that is not a body position.
jme_nod_apsWhat it does Computes the times of the nodes and apsides of a body at a Terrestrial Time epoch.
When to use it Use this when you need ascending node, descending node, perihelion, and aphelion near a TT date.
Where it fits Orbital geometry. method selects the algorithm.
jme_nod_aps(jd_et, body, flags, method, tret, error)
jd_et
Terrestrial Time (TT) as a Julian date.
body
Body id such as JME_BODY_SUN. The body constants list every id.
flags
Flag bits for this call. Pass 0 for the default. The constant group for this family lists the bits.
method
Algorithm selector for nodes and apsides. Use the method values documented for this call.
tret
Caller-owned array of Julian dates. The description says which index is which event.
error
Caller-owned text buffer. On failure the library writes the reason here.
Returns JME_OK (0) or JME_ERR (-1). On JME_ERR, read error. The output arguments are written as the description says.
jme_nod_aps_utWhat it does Computes nodes and apsides starting from Universal Time.
When to use it Use this when the epoch clock is UT.
Where it fits The UT pair of jme_nod_aps.
jme_nod_aps_ut(jd_ut, body, flags, method, tret, error)
jd_ut
Universal Time as a Julian date. Use this when the clock you have is UT.
body
Body id such as JME_BODY_SUN. The body constants list every id.
flags
Flag bits for this call. Pass 0 for the default. The constant group for this family lists the bits.
method
Algorithm selector for nodes and apsides. Use the method values documented for this call.
tret
Caller-owned array of Julian dates. The description says which index is which event.
error
Caller-owned text buffer. On failure the library writes the reason here.
Returns JME_OK (0) or JME_ERR (-1). On JME_ERR, read error. The output arguments are written as the description says.
jme_orbit_max_min_true_distance
What it does Finds the nearby times and values of maximum and minimum true distance.
When to use it Use this when the question is how near and how far the body gets around this date.
Where it fits Distance ranges. Outputs are tmax, tmin, dmax, and dmin.
jme_orbit_max_min_true_distance(jd_et, body, flags, tmax, tmin, dmax, dmin, error)
jd_et
Terrestrial Time (TT) as a Julian date.
body
Body id such as JME_BODY_SUN. The body constants list every id.
flags
Flag bits for this call. Pass 0 for the default. The constant group for this family lists the bits.
tmax
Receives the time of maximum true distance.
tmin
Receives the time of minimum true distance.
dmax
Receives the maximum true distance.
dmin
Receives the minimum true distance.
error
Caller-owned text buffer. On failure the library writes the reason here.
Returns JME_OK (0) or JME_ERR (-1). On JME_ERR, read error. The output arguments are written as the description says.
jme_double_to_longWhat it does Rounds a floating-point number to the nearest integer.
When to use it Use this for a display count, not for a longitude you will compute with again.
Where it fits Halfway cases move away from zero.
jme_double_to_long(x)
x
Number to round to the nearest integer, away from zero on a tie.
Returns the integer result named above. A status-style return uses JME_OK and JME_ERR.
jme_jd_add_secondsWhat it does Adds a number of seconds to a Julian date.
When to use it Use this to step a search or to apply a small clock correction without rebuilding the calendar date.
Where it fits The result is another Julian date.
jme_jd_add_seconds(jd, seconds)
jd
Julian date. The description of the call says which time scale that number is.
seconds
A number of seconds to add, or the seconds field of a clock time.
Returns the number described above. A non-finite value means the call could not produce that number.
Function group
Use these for a chart on Earth: the observer, the house cusps, and which house a longitude falls in. Set the place before a topocentric planet.
jme_set_topoWhat it does Stores the observer longitude, latitude, and height for later topocentric calls.
When to use it Call it before any position, house, or rise that should be for a place rather than the geocentre.
Where it fits Once per observer. The checked form rejects a latitude outside -90 to 90.
jme_set_topo(lon, lat, altitude)
lon
Geographic longitude in degrees. East is positive. The checked setter wraps it into the half-open range around zero.
lat
Geographic latitude in degrees. The checked setter rejects a value outside -90 to 90.
altitude
Observer height in metres.
Returns nothing. The call writes its output arguments, or it changes a library setting for later calls.
jme_housesWhat it does Computes the twelve house cusps and the angles for a place at Universal Time.
When to use it Use this for a natal or horary chart when you do not need cusp speeds or extra flags.
Where it fits After you know UT, latitude, and longitude. Pick the system with a JME_HOUSE_* id.
jme_houses(jd_ut, geo_lat, geo_lon, house_system, cusps, ascmc)
jd_ut
Universal Time of the chart, as a Julian date.
geo_lat
Geographic latitude in degrees. North is positive.
geo_lon
Geographic longitude in degrees. East is positive.
house_system
House-system id such as JME_HOUSE_PLACIDUS. Do not pass JME_HOUSE_GAUQUELIN to the 12-cusp calls.
cusps
Caller-owned cusp array. Twelve-cusp calls use 13 numbers (index 1 to 12). Gauquelin calls use 37 numbers.
ascmc
Caller-owned array for the Ascendant, Midheaven, and the other angles this call returns.
Returns the integer result named above. A status-style return uses JME_OK and JME_ERR.
jme_houses_exWhat it does Computes house cusps with calculation flags such as sidereal or no nutation.
When to use it Use this when the houses must follow the same sidereal mode or nutation choice as the planets.
Where it fits A sidereal chart. Flags match the house flags documented for this call.
jme_houses_ex(jd_ut, flags, geo_lat, geo_lon, house_system, cusps, ascmc)
jd_ut
Universal Time as a Julian date. Use this when the clock you have is UT.
flags
Flag bits for this call. Pass 0 for the default. The constant group for this family lists the bits.
geo_lat
Geographic latitude in degrees. North is positive.
geo_lon
Geographic longitude in degrees. East is positive.
house_system
House-system id such as JME_HOUSE_PLACIDUS. Do not pass JME_HOUSE_GAUQUELIN to the 12-cusp calls.
cusps
Caller-owned cusp array. Twelve-cusp calls use 13 numbers (index 1 to 12). Gauquelin calls use 37 numbers.
ascmc
Caller-owned array for the Ascendant, Midheaven, and the other angles this call returns.
Returns the integer result named above. A status-style return uses JME_OK and JME_ERR.
jme_houses_ex2What it does Computes house cusps and the speed of each cusp and angle.
When to use it Use this when a chart needs how fast the cusps are moving.
Where it fits The same place and time as jme_houses_ex, with two more output arrays.
jme_houses_ex2(jd_ut, flags, geo_lat, geo_lon, house_system, cusps, ascmc, cusps_speed, ascmc_speed)
jd_ut
Universal Time as a Julian date. Use this when the clock you have is UT.
flags
Flag bits for this call. Pass 0 for the default. The constant group for this family lists the bits.
geo_lat
Geographic latitude in degrees. North is positive.
geo_lon
Geographic longitude in degrees. East is positive.
house_system
House-system id such as JME_HOUSE_PLACIDUS. Do not pass JME_HOUSE_GAUQUELIN to the 12-cusp calls.
cusps
Caller-owned cusp array. Twelve-cusp calls use 13 numbers (index 1 to 12). Gauquelin calls use 37 numbers.
ascmc
Caller-owned array for the Ascendant, Midheaven, and the other angles this call returns.
cusps_speed
Caller-owned array for the rate of each cusp. Use the same length as cusps.
ascmc_speed
Caller-owned array for the rate of each angle in ascmc.
Returns the integer result named above. A status-style return uses JME_OK and JME_ERR.
jme_houses_armcWhat it does Computes house cusps from the right ascension of the Midheaven and the obliquity.
When to use it Use this when you already have RAMC and obliquity and you do not want the call to derive them from UT.
Where it fits A house routine downstream of your own sidereal time.
jme_houses_armc(armc, geo_lat, eps, house_system, cusps, ascmc)
armc
Right ascension of the Midheaven, in degrees.
geo_lat
Geographic latitude in degrees. North is positive.
eps
Obliquity of the ecliptic, in degrees, at the date you are using.
house_system
House-system id such as JME_HOUSE_PLACIDUS. Do not pass JME_HOUSE_GAUQUELIN to the 12-cusp calls.
cusps
Caller-owned cusp array. Twelve-cusp calls use 13 numbers (index 1 to 12). Gauquelin calls use 37 numbers.
ascmc
Caller-owned array for the Ascendant, Midheaven, and the other angles this call returns.
Returns the integer result named above. A status-style return uses JME_OK and JME_ERR.
jme_houses_armc_ex2What it does Computes house cusps and their speeds from RAMC and obliquity.
When to use it Use this when you have RAMC and you also need cusp rates.
Where it fits The speed-aware pair of jme_houses_armc.
jme_houses_armc_ex2(armc, geo_lat, eps, house_system, cusps, ascmc, cusps_speed, ascmc_speed)
armc
Right ascension of the Midheaven, in degrees.
geo_lat
Geographic latitude in degrees. North is positive.
eps
Obliquity of the ecliptic, in degrees, at the date you are using.
house_system
House-system id such as JME_HOUSE_PLACIDUS. Do not pass JME_HOUSE_GAUQUELIN to the 12-cusp calls.
cusps
Caller-owned cusp array. Twelve-cusp calls use 13 numbers (index 1 to 12). Gauquelin calls use 37 numbers.
ascmc
Caller-owned array for the Ascendant, Midheaven, and the other angles this call returns.
cusps_speed
Caller-owned array for the rate of each cusp. Use the same length as cusps.
ascmc_speed
Caller-owned array for the rate of each angle in ascmc.
Returns the integer result named above. A status-style return uses JME_OK and JME_ERR.
jme_house_posWhat it does Returns the house number, with a fraction, of one ecliptic longitude.
When to use it Use this after the cusps exist and you want 'which house is this planet in'.
Where it fits Per body, once the angles are known. xpin[0] is the longitude. A missing system returns a non-finite value.
jme_house_pos(armc, geo_lat, eps, house_system, xpin, error)
armc
Right ascension of the Midheaven, in degrees.
geo_lat
Geographic latitude in degrees. North is positive.
eps
Obliquity of the ecliptic, in degrees, at the date you are using.
house_system
House-system id such as JME_HOUSE_PLACIDUS. Do not pass JME_HOUSE_GAUQUELIN to the 12-cusp calls.
xpin
Ecliptic longitude of the point, in degrees, in the first element.
error
Caller-owned text buffer. On failure the library writes the reason here.
Returns the house position as a number such as 1.25 for a point a quarter of the way through house 1. Returns a non-finite value, and writes error, when the house system is unavailable.
jme_gauquelin_sectorWhat it does Computes the Gauquelin sector of one body or star for an observer.
When to use it Use this when you need the sector number of a single body, not the whole cusp list.
Where it fits After the observer place is known. imeth selects the sector method.
jme_gauquelin_sector(jd_ut, body, starname, flags, imeth, geopos, atpress, attemp, dgsect, error)
jd_ut
Universal Time as a Julian date. Use this when the clock you have is UT.
body
Body id such as JME_BODY_SUN. The body constants list every id.
starname
Star name. Use an empty string when the call is for a solar-system body.
flags
Flag bits for this call. Pass 0 for the default. The constant group for this family lists the bits.
imeth
Gauquelin method selector for the sector division.
geopos
Observer longitude, latitude, and height, in that order, in degrees and metres.
atpress
Atmospheric pressure at the observer, in millibars.
attemp
Atmospheric temperature at the observer, in degrees Celsius.
dgsect
Receives the Gauquelin sector number.
error
Caller-owned text buffer. On failure the library writes the reason here.
Returns JME_OK (0) or JME_ERR (-1). On JME_ERR, read error. The output arguments are written as the description says.
jme_get_topo_posWhat it does Returns the observer position in astronomical units at Terrestrial Time.
When to use it Use this when a topocentric vector must start from the stored observer.
Where it fits After jme_set_topo. Polar motion is applied only when that option is on.
jme_get_topo_pos(jd_et, pos_au, error)
jd_et
Terrestrial Time (TT) as a Julian date.
pos_au
Receives the observer position in astronomical units.
error
Caller-owned text buffer. On failure the library writes the reason here.
Returns JME_OK (0) or JME_ERR (-1). On JME_ERR, read error. The output arguments are written as the description says.
jme_equatorial_to_horizontal
What it does Converts hour angle and declination to azimuth and altitude.
When to use it Use this for a sky position at a known latitude: is the body up, and where.
Where it fits After you have the hour angle. Refraction is separate, in jme_refract.
jme_equatorial_to_horizontal(hour_angle, dec, geo_lat, azimuth, altitude)
hour_angle
Hour angle in degrees, or the variable that receives it.
dec
Declination in degrees, or the variable that receives it.
geo_lat
Geographic latitude in degrees. North is positive.
azimuth
Receives azimuth.
altitude
Height. For an observer this is metres. For refraction this is the altitude angle in degrees.
Returns nothing. The call writes its output arguments, or it changes a library setting for later calls.
jme_horizontal_to_equatorial
What it does Converts azimuth and altitude to hour angle and declination.
When to use it Use this when the observation is a horizon reading and you need the equator.
Where it fits You supply the observer latitude.
jme_horizontal_to_equatorial(azimuth, altitude, geo_lat, hour_angle, dec)
azimuth
Receives azimuth.
altitude
Height. For an observer this is metres. For refraction this is the altitude angle in degrees.
geo_lat
Geographic latitude in degrees. North is positive.
hour_angle
Hour angle in degrees, or the variable that receives it.
dec
Declination in degrees, or the variable that receives it.
Returns nothing. The call writes its output arguments, or it changes a library setting for later calls.
jme_house_system_name
What it does Returns the display name of a house-system id.
When to use it Use this to label a JME_HOUSE_* value in a menu.
Where it fits Gauquelin sectors are computed by jme_houses_gauquelin, not by passing that id to jme_houses.
jme_house_system_name(house_system)
house_system
House-system id such as JME_HOUSE_PLACIDUS. Do not pass JME_HOUSE_GAUQUELIN to the 12-cusp calls.
Returns a pointer to a static display name, or NULL for an unknown id.
Function group
Use these only when you read a .bsp kernel yourself. Open the file first. The date is the kernel's own time scale, not Universal Time, except for the calls whose names say utc.
jme_jpl_fileWhat it does Returns the kernel path currently selected for the high-level engine.
When to use it Call it to confirm which file ENGINE=JPL will open.
Where it fits After jme_set_jpl_file.
jme_jpl_file()
Returns the text. When you pass buffer, the text is written there and the return points at that buffer.
jme_set_jpl_fileWhat it does Selects the .bsp file used by the high-level JPL engine. The kernel is opened lazily on the next high-level calculation.
When to use it Call it when ENGINE=JPL or ENGINE=AUTO should read a kernel.
Where it fits Startup, before jme_calc. Low-level reads use jme_jpl_open instead.
jme_set_jpl_file(path)
path
Filesystem path to a .bsp file, or a relative kernel name resolved against jme_set_ephemeris_path().
Returns nothing. The call writes its output arguments, or it changes a library setting for later calls.
jme_jpl_body_stateWhat it does Reads the position and velocity from the open kernel at one Julian date on the kernel's native time scale (TDB or TCB), identified by JME body ids. unit selects AU or kilometres, and per day or per second.
When to use it Use this low-level read when you have one Julian date already expressed on the kernel time scale and you want the kernel vector rather than the ecliptic place from jme_calc.
Where it fits After jme_jpl_open. Do not pass UT here. For a civil clock and an ecliptic longitude, use jme_calc_ut.
jme_jpl_body_state(jd_time, target_body, center_body, unit, state, error)
jd_time
Input or output for this call. The name is the shared argument name.
target_body
Body id of the object you want.
center_body
Body id of the origin of the vector. The solar-system barycentre and the Earth are both valid centers when the kernel has them.
unit
Output unit. Position calls use a JME_VECTOR_* id. Orientation calls use a JME_ORIENTATION_* id.
state
Caller-owned state array. Position calls use six numbers: position, then velocity.
error
Caller-owned text buffer. On failure the library writes the reason here.
Returns JME_OK (0) or JME_ERR (-1). On JME_ERR, read error. The output arguments are written as the description says.
jme_jpl_body_state_split
What it does Reads the position and velocity from the open kernel at a split Julian date (jd0 + time_offset) on the kernel's native time scale, identified by JME body ids. unit selects AU or kilometres, and per day or per second.
When to use it Use this low-level read when you already hold a split Julian date and need to keep that split and you want the kernel vector rather than the ecliptic place from jme_calc.
Where it fits After jme_jpl_open. Do not pass UT here. For a civil clock and an ecliptic longitude, use jme_calc_ut.
jme_jpl_body_state_split(jd0, time_offset, target_body, center_body, unit, state, error)
jd0
Coarse part of a split Julian date on the kernel time scale.
time_offset
Small part added to jd0, so the split date keeps its digits.
target_body
Body id of the object you want.
center_body
Body id of the origin of the vector. The solar-system barycentre and the Earth are both valid centers when the kernel has them.
unit
Output unit. Position calls use a JME_VECTOR_* id. Orientation calls use a JME_ORIENTATION_* id.
state
Caller-owned state array. Position calls use six numbers: position, then velocity.
error
Caller-owned text buffer. On failure the library writes the reason here.
Returns JME_OK (0) or JME_ERR (-1). On JME_ERR, read error. The output arguments are written as the description says.
jme_jpl_ecliptic_state
What it does Reads the ecliptic position and velocity from the open kernel at one Julian date on the kernel's native time scale (TDB or TCB), identified by JME body ids. unit selects AU or kilometres, and per day or per second.
When to use it Use this low-level read when you have one Julian date already expressed on the kernel time scale and you want the kernel vector rather than the ecliptic place from jme_calc.
Where it fits After jme_jpl_open. Do not pass UT here. For a civil clock and an ecliptic longitude, use jme_calc_ut.
jme_jpl_ecliptic_state(jd_time, target_body, center_body, unit, state, error)
jd_time
Input or output for this call. The name is the shared argument name.
target_body
Body id of the object you want.
center_body
Body id of the origin of the vector. The solar-system barycentre and the Earth are both valid centers when the kernel has them.
unit
Output unit. Position calls use a JME_VECTOR_* id. Orientation calls use a JME_ORIENTATION_* id.
state
Caller-owned state array. Position calls use six numbers: position, then velocity.
error
Caller-owned text buffer. On failure the library writes the reason here.
Returns JME_OK (0) or JME_ERR (-1). On JME_ERR, read error. The output arguments are written as the description says.
jme_jpl_body_state_naif
What it does Reads the position and velocity from the open kernel at one Julian date on the kernel's native time scale (TDB or TCB), identified by NAIF ids. unit selects AU or kilometres, and per day or per second.
When to use it Use this low-level read when you have one Julian date already expressed on the kernel time scale and you want the kernel vector rather than the ecliptic place from jme_calc.
Where it fits After jme_jpl_open. Do not pass UT here. For a civil clock and an ecliptic longitude, use jme_calc_ut.
jme_jpl_body_state_naif(jd_time, target_naif, center_naif, unit, state, error)
jd_time
Input or output for this call. The name is the shared argument name.
target_naif
NAIF id of the object, as stored in the kernel.
center_naif
NAIF id of the origin of the vector.
unit
Output unit. Position calls use a JME_VECTOR_* id. Orientation calls use a JME_ORIENTATION_* id.
state
Caller-owned state array. Position calls use six numbers: position, then velocity.
error
Caller-owned text buffer. On failure the library writes the reason here.
Returns JME_OK (0) or JME_ERR (-1). On JME_ERR, read error. The output arguments are written as the description says.
jme_jpl_body_state_split_naif
What it does Reads the position and velocity from the open kernel at a split Julian date (jd0 + time_offset) on the kernel's native time scale, identified by NAIF ids. unit selects AU or kilometres, and per day or per second.
When to use it Use this low-level read when you already hold a split Julian date and need to keep that split and you want the kernel vector rather than the ecliptic place from jme_calc.
Where it fits After jme_jpl_open. Do not pass UT here. For a civil clock and an ecliptic longitude, use jme_calc_ut.
jme_jpl_body_state_split_naif(jd0, time_offset, target_naif, center_naif, unit, state, error)
jd0
Coarse part of a split Julian date on the kernel time scale.
time_offset
Small part added to jd0, so the split date keeps its digits.
target_naif
NAIF id of the object, as stored in the kernel.
center_naif
NAIF id of the origin of the vector.
unit
Output unit. Position calls use a JME_VECTOR_* id. Orientation calls use a JME_ORIENTATION_* id.
state
Caller-owned state array. Position calls use six numbers: position, then velocity.
error
Caller-owned text buffer. On failure the library writes the reason here.
Returns JME_OK (0) or JME_ERR (-1). On JME_ERR, read error. The output arguments are written as the description says.
jme_jpl_body_state_native_naif
What it does Reads the position and velocity from the open kernel at one Julian date on the kernel's native time scale (TDB or TCB), identified by NAIF ids. The numbers stay in the kernel's native units.
When to use it Use this low-level read when you have one Julian date already expressed on the kernel time scale and you want the kernel vector rather than the ecliptic place from jme_calc.
Where it fits After jme_jpl_open. Do not pass UT here. For a civil clock and an ecliptic longitude, use jme_calc_ut.
jme_jpl_body_state_native_naif(jd_time, target_naif, center_naif, state, error)
jd_time
Input or output for this call. The name is the shared argument name.
target_naif
NAIF id of the object, as stored in the kernel.
center_naif
NAIF id of the origin of the vector.
state
Caller-owned state array. Position calls use six numbers: position, then velocity.
error
Caller-owned text buffer. On failure the library writes the reason here.
Returns JME_OK (0) or JME_ERR (-1). On JME_ERR, read error. The output arguments are written as the description says.
jme_jpl_body_state_native
What it does Reads the position and velocity from the open kernel at one Julian date on the kernel's native time scale (TDB or TCB), identified by JME body ids. The numbers stay in the kernel's native units.
When to use it Use this low-level read when you have one Julian date already expressed on the kernel time scale and you want the kernel vector rather than the ecliptic place from jme_calc.
Where it fits After jme_jpl_open. Do not pass UT here. For a civil clock and an ecliptic longitude, use jme_calc_ut.
jme_jpl_body_state_native(jd_time, target_body, center_body, state, error)
jd_time
Input or output for this call. The name is the shared argument name.
target_body
Body id of the object you want.
center_body
Body id of the origin of the vector. The solar-system barycentre and the Earth are both valid centers when the kernel has them.
state
Caller-owned state array. Position calls use six numbers: position, then velocity.
error
Caller-owned text buffer. On failure the library writes the reason here.
Returns JME_OK (0) or JME_ERR (-1). On JME_ERR, read error. The output arguments are written as the description says.
jme_jpl_body_state_native_split_naif
What it does Reads the position and velocity from the open kernel at a split Julian date (jd0 + time_offset) on the kernel's native time scale, identified by NAIF ids. The numbers stay in the kernel's native units.
When to use it Use this low-level read when you already hold a split Julian date and need to keep that split and you want the kernel vector rather than the ecliptic place from jme_calc.
Where it fits After jme_jpl_open. Do not pass UT here. For a civil clock and an ecliptic longitude, use jme_calc_ut.
jme_jpl_body_state_native_split_naif(jd0, time_offset, target_naif, center_naif, state, error)
jd0
Coarse part of a split Julian date on the kernel time scale.
time_offset
Small part added to jd0, so the split date keeps its digits.
target_naif
NAIF id of the object, as stored in the kernel.
center_naif
NAIF id of the origin of the vector.
state
Caller-owned state array. Position calls use six numbers: position, then velocity.
error
Caller-owned text buffer. On failure the library writes the reason here.
Returns JME_OK (0) or JME_ERR (-1). On JME_ERR, read error. The output arguments are written as the description says.
jme_jpl_body_state_native_split
What it does Reads the position and velocity from the open kernel at a split Julian date (jd0 + time_offset) on the kernel's native time scale, identified by JME body ids. The numbers stay in the kernel's native units.
When to use it Use this low-level read when you already hold a split Julian date and need to keep that split and you want the kernel vector rather than the ecliptic place from jme_calc.
Where it fits After jme_jpl_open. Do not pass UT here. For a civil clock and an ecliptic longitude, use jme_calc_ut.
jme_jpl_body_state_native_split(jd0, time_offset, target_body, center_body, state, error)
jd0
Coarse part of a split Julian date on the kernel time scale.
time_offset
Small part added to jd0, so the split date keeps its digits.
target_body
Body id of the object you want.
center_body
Body id of the origin of the vector. The solar-system barycentre and the Earth are both valid centers when the kernel has them.
state
Caller-owned state array. Position calls use six numbers: position, then velocity.
error
Caller-owned text buffer. On failure the library writes the reason here.
Returns JME_OK (0) or JME_ERR (-1). On JME_ERR, read error. The output arguments are written as the description says.
jme_jpl_body_state_order_naif
What it does Reads the position and velocity from the open kernel at a split Julian date (jd0 + time_offset) on the kernel's native time scale, identified by NAIF ids. order asks for derivatives beyond velocity. unit selects AU or kilometres, and per day or per second.
When to use it Use this low-level read when you already hold a split Julian date and need to keep that split and you want the kernel vector rather than the ecliptic place from jme_calc.
Where it fits After jme_jpl_open. Do not pass UT here. For a civil clock and an ecliptic longitude, use jme_calc_ut.
jme_jpl_body_state_order_naif(jd0, time_offset, target_naif, center_naif, unit, order, state, error)
jd0
Coarse part of a split Julian date on the kernel time scale.
time_offset
Small part added to jd0, so the split date keeps its digits.
target_naif
NAIF id of the object, as stored in the kernel.
center_naif
NAIF id of the origin of the vector.
unit
Output unit. Position calls use a JME_VECTOR_* id. Orientation calls use a JME_ORIENTATION_* id.
order
Highest derivative to return. Zero is position only.
state
Caller-owned state array. Position calls use six numbers: position, then velocity.
error
Caller-owned text buffer. On failure the library writes the reason here.
Returns JME_OK (0) or JME_ERR (-1). On JME_ERR, read error. The output arguments are written as the description says.
jme_jpl_body_state_order
What it does Reads the position and velocity from the open kernel at a split Julian date (jd0 + time_offset) on the kernel's native time scale, identified by JME body ids. order asks for derivatives beyond velocity. unit selects AU or kilometres, and per day or per second.
When to use it Use this low-level read when you already hold a split Julian date and need to keep that split and you want the kernel vector rather than the ecliptic place from jme_calc.
Where it fits After jme_jpl_open. Do not pass UT here. For a civil clock and an ecliptic longitude, use jme_calc_ut.
jme_jpl_body_state_order(jd0, time_offset, target_body, center_body, unit, order, state, error)
jd0
Coarse part of a split Julian date on the kernel time scale.
time_offset
Small part added to jd0, so the split date keeps its digits.
target_body
Body id of the object you want.
center_body
Body id of the origin of the vector. The solar-system barycentre and the Earth are both valid centers when the kernel has them.
unit
Output unit. Position calls use a JME_VECTOR_* id. Orientation calls use a JME_ORIENTATION_* id.
order
Highest derivative to return. Zero is position only.
state
Caller-owned state array. Position calls use six numbers: position, then velocity.
error
Caller-owned text buffer. On failure the library writes the reason here.
Returns JME_OK (0) or JME_ERR (-1). On JME_ERR, read error. The output arguments are written as the description says.
jme_jpl_body_state_utc_naif
What it does Reads the position and velocity from the open kernel at a UTC calendar date, converted inside the call onto the kernel time scale, identified by NAIF ids. unit selects AU or kilometres, and per day or per second.
When to use it Use this low-level read when the time you have is a UTC calendar date and you want the kernel vector rather than the ecliptic place from jme_calc.
Where it fits After jme_jpl_open. Do not pass UT here. For a civil clock and an ecliptic longitude, use jme_calc_ut.
jme_jpl_body_state_utc_naif(year, month, day, hour, minute, second, calendar, target_naif, center_naif, unit, state, error)
year
Calendar year. Astronomical year numbering, so 1 BCE is year 0.
month
Month number from 1 to 12.
day
Day of the month.
hour
Hour. Where the call takes a decimal hour, fractions of an hour are allowed.
minute
Minute.
second
Second, including the fraction. A leap second 60 is accepted only on a UTC path that validates it.
calendar
JME_CALENDAR_GREGORIAN or JME_CALENDAR_JULIAN.
target_naif
NAIF id of the object, as stored in the kernel.
center_naif
NAIF id of the origin of the vector.
unit
Output unit. Position calls use a JME_VECTOR_* id. Orientation calls use a JME_ORIENTATION_* id.
state
Caller-owned state array. Position calls use six numbers: position, then velocity.
error
Caller-owned text buffer. On failure the library writes the reason here.
Returns JME_OK (0) or JME_ERR (-1). On JME_ERR, read error. The output arguments are written as the description says.
jme_jpl_body_state_utc
What it does Reads the position and velocity from the open kernel at a UTC calendar date, converted inside the call onto the kernel time scale, identified by JME body ids. unit selects AU or kilometres, and per day or per second.
When to use it Use this low-level read when the time you have is a UTC calendar date and you want the kernel vector rather than the ecliptic place from jme_calc.
Where it fits After jme_jpl_open. Do not pass UT here. For a civil clock and an ecliptic longitude, use jme_calc_ut.
jme_jpl_body_state_utc(year, month, day, hour, minute, second, calendar, target_body, center_body, unit, state, error)
year
Calendar year. Astronomical year numbering, so 1 BCE is year 0.
month
Month number from 1 to 12.
day
Day of the month.
hour
Hour. Where the call takes a decimal hour, fractions of an hour are allowed.
minute
Minute.
second
Second, including the fraction. A leap second 60 is accepted only on a UTC path that validates it.
calendar
JME_CALENDAR_GREGORIAN or JME_CALENDAR_JULIAN.
target_body
Body id of the object you want.
center_body
Body id of the origin of the vector. The solar-system barycentre and the Earth are both valid centers when the kernel has them.
unit
Output unit. Position calls use a JME_VECTOR_* id. Orientation calls use a JME_ORIENTATION_* id.
state
Caller-owned state array. Position calls use six numbers: position, then velocity.
error
Caller-owned text buffer. On failure the library writes the reason here.
Returns JME_OK (0) or JME_ERR (-1). On JME_ERR, read error. The output arguments are written as the description says.
jme_jpl_ecliptic_state_naif
What it does Reads the ecliptic position and velocity from the open kernel at one Julian date on the kernel's native time scale (TDB or TCB), identified by NAIF ids. unit selects AU or kilometres, and per day or per second.
When to use it Use this low-level read when you have one Julian date already expressed on the kernel time scale and you want the kernel vector rather than the ecliptic place from jme_calc.
Where it fits After jme_jpl_open. Do not pass UT here. For a civil clock and an ecliptic longitude, use jme_calc_ut.
jme_jpl_ecliptic_state_naif(jd_time, target_naif, center_naif, unit, state, error)
jd_time
Input or output for this call. The name is the shared argument name.
target_naif
NAIF id of the object, as stored in the kernel.
center_naif
NAIF id of the origin of the vector.
unit
Output unit. Position calls use a JME_VECTOR_* id. Orientation calls use a JME_ORIENTATION_* id.
state
Caller-owned state array. Position calls use six numbers: position, then velocity.
error
Caller-owned text buffer. On failure the library writes the reason here.
Returns JME_OK (0) or JME_ERR (-1). On JME_ERR, read error. The output arguments are written as the description says.
jme_jpl_ecliptic_state_split
What it does Reads the ecliptic position and velocity from the open kernel at a split Julian date (jd0 + time_offset) on the kernel's native time scale, identified by JME body ids. unit selects AU or kilometres, and per day or per second.
When to use it Use this low-level read when you already hold a split Julian date and need to keep that split and you want the kernel vector rather than the ecliptic place from jme_calc.
Where it fits After jme_jpl_open. Do not pass UT here. For a civil clock and an ecliptic longitude, use jme_calc_ut.
jme_jpl_ecliptic_state_split(jd0, time_offset, target_body, center_body, unit, state, error)
jd0
Coarse part of a split Julian date on the kernel time scale.
time_offset
Small part added to jd0, so the split date keeps its digits.
target_body
Body id of the object you want.
center_body
Body id of the origin of the vector. The solar-system barycentre and the Earth are both valid centers when the kernel has them.
unit
Output unit. Position calls use a JME_VECTOR_* id. Orientation calls use a JME_ORIENTATION_* id.
state
Caller-owned state array. Position calls use six numbers: position, then velocity.
error
Caller-owned text buffer. On failure the library writes the reason here.
Returns JME_OK (0) or JME_ERR (-1). On JME_ERR, read error. The output arguments are written as the description says.
jme_jpl_ecliptic_state_split_naif
What it does Reads the ecliptic position and velocity from the open kernel at a split Julian date (jd0 + time_offset) on the kernel's native time scale, identified by NAIF ids. unit selects AU or kilometres, and per day or per second.
When to use it Use this low-level read when you already hold a split Julian date and need to keep that split and you want the kernel vector rather than the ecliptic place from jme_calc.
Where it fits After jme_jpl_open. Do not pass UT here. For a civil clock and an ecliptic longitude, use jme_calc_ut.
jme_jpl_ecliptic_state_split_naif(jd0, time_offset, target_naif, center_naif, unit, state, error)
jd0
Coarse part of a split Julian date on the kernel time scale.
time_offset
Small part added to jd0, so the split date keeps its digits.
target_naif
NAIF id of the object, as stored in the kernel.
center_naif
NAIF id of the origin of the vector.
unit
Output unit. Position calls use a JME_VECTOR_* id. Orientation calls use a JME_ORIENTATION_* id.
state
Caller-owned state array. Position calls use six numbers: position, then velocity.
error
Caller-owned text buffer. On failure the library writes the reason here.
Returns JME_OK (0) or JME_ERR (-1). On JME_ERR, read error. The output arguments are written as the description says.
jme_jpl_ecliptic_state_utc_naif
What it does Reads the ecliptic position and velocity from the open kernel at a UTC calendar date, converted inside the call onto the kernel time scale, identified by NAIF ids. unit selects AU or kilometres, and per day or per second.
When to use it Use this low-level read when the time you have is a UTC calendar date and you want the kernel vector rather than the ecliptic place from jme_calc.
Where it fits After jme_jpl_open. Do not pass UT here. For a civil clock and an ecliptic longitude, use jme_calc_ut.
jme_jpl_ecliptic_state_utc_naif(year, month, day, hour, minute, second, calendar, target_naif, center_naif, unit, state, error)
year
Calendar year. Astronomical year numbering, so 1 BCE is year 0.
month
Month number from 1 to 12.
day
Day of the month.
hour
Hour. Where the call takes a decimal hour, fractions of an hour are allowed.
minute
Minute.
second
Second, including the fraction. A leap second 60 is accepted only on a UTC path that validates it.
calendar
JME_CALENDAR_GREGORIAN or JME_CALENDAR_JULIAN.
target_naif
NAIF id of the object, as stored in the kernel.
center_naif
NAIF id of the origin of the vector.
unit
Output unit. Position calls use a JME_VECTOR_* id. Orientation calls use a JME_ORIENTATION_* id.
state
Caller-owned state array. Position calls use six numbers: position, then velocity.
error
Caller-owned text buffer. On failure the library writes the reason here.
Returns JME_OK (0) or JME_ERR (-1). On JME_ERR, read error. The output arguments are written as the description says.
jme_jpl_ecliptic_state_utc
What it does Reads the ecliptic position and velocity from the open kernel at a UTC calendar date, converted inside the call onto the kernel time scale, identified by JME body ids. unit selects AU or kilometres, and per day or per second.
When to use it Use this low-level read when the time you have is a UTC calendar date and you want the kernel vector rather than the ecliptic place from jme_calc.
Where it fits After jme_jpl_open. Do not pass UT here. For a civil clock and an ecliptic longitude, use jme_calc_ut.
jme_jpl_ecliptic_state_utc(year, month, day, hour, minute, second, calendar, target_body, center_body, unit, state, error)
year
Calendar year. Astronomical year numbering, so 1 BCE is year 0.
month
Month number from 1 to 12.
day
Day of the month.
hour
Hour. Where the call takes a decimal hour, fractions of an hour are allowed.
minute
Minute.
second
Second, including the fraction. A leap second 60 is accepted only on a UTC path that validates it.
calendar
JME_CALENDAR_GREGORIAN or JME_CALENDAR_JULIAN.
target_body
Body id of the object you want.
center_body
Body id of the origin of the vector. The solar-system barycentre and the Earth are both valid centers when the kernel has them.
unit
Output unit. Position calls use a JME_VECTOR_* id. Orientation calls use a JME_ORIENTATION_* id.
state
Caller-owned state array. Position calls use six numbers: position, then velocity.
error
Caller-owned text buffer. On failure the library writes the reason here.
Returns JME_OK (0) or JME_ERR (-1). On JME_ERR, read error. The output arguments are written as the description says.
jme_jpl_closeWhat it does Closes the kernel opened for the low-level JPL calls.
When to use it Call it when you are finished with jme_jpl_body_state and the other kernel reads.
Where it fits The high-level engine has its own file selection through jme_set_jpl_file.
jme_jpl_close()
Returns nothing. The call writes its output arguments, or it changes a library setting for later calls.
jme_jpl_coverageWhat it does Reports the first time, last time, and whether the open kernel coverage is continuous.
When to use it Call it before a date that might fall outside the file.
Where it fits After jme_jpl_open.
jme_jpl_coverage(first_time, last_time, continuous, error)
first_time
Receives the first time the kernel covers.
last_time
Receives the last time the kernel covers.
continuous
Receives non-zero when the coverage has no gap.
error
Caller-owned text buffer. On failure the library writes the reason here.
Returns JME_OK (0) or JME_ERR (-1). On JME_ERR, read error. The output arguments are written as the description says.
jme_jpl_constantWhat it does Reads one numeric constant from the open kernel by name.
When to use it Use this for a kernel header value such as a defined constant the file publishes.
Where it fits After the kernel is open. The name is the kernel's own constant name.
jme_jpl_constant(name, value, error)
name
Name to look up, or the buffer that receives a name.
value
Receives one numeric kernel constant.
error
Caller-owned text buffer. On failure the library writes the reason here.
Returns JME_OK (0) or JME_ERR (-1). On JME_ERR, read error. The output arguments are written as the description says.
jme_jpl_constant_count
What it does Returns how many constants the open kernel publishes.
When to use it Use this before you loop with jme_jpl_constant_index.
Where it fits A kernel inspection screen.
jme_jpl_constant_count(error)
error
Caller-owned text buffer. On failure the library writes the reason here.
Returns JME_OK (0) or JME_ERR (-1). On JME_ERR, read error. The output arguments are written as the description says.
jme_jpl_constant_index
What it does Reads one kernel constant by its index, returning the name and the value.
When to use it Use this to list every constant when you do not know the names.
Where it fits Index runs from zero to one less than jme_jpl_constant_count.
jme_jpl_constant_index(index, name, name_size, value, error)
index
Zero-based index into the kernel list you are reading.
name
Name to look up, or the buffer that receives a name.
name_size
Size of the name buffer, in bytes.
value
Receives one numeric kernel constant.
error
Caller-owned text buffer. On failure the library writes the reason here.
Returns JME_OK (0) or JME_ERR (-1). On JME_ERR, read error. The output arguments are written as the description says.
jme_jpl_constant_vector
What it does Reads a numeric kernel constant that has several values.
When to use it Use this when jme_jpl_constant is the wrong shape because the constant is a vector.
Where it fits value_count is how many numbers you allocated.
jme_jpl_constant_vector(name, values, value_count, error)
name
Name to look up, or the buffer that receives a name.
values
Receives several numeric kernel constants, or the text buffer for a string vector.
value_count
How many values to write.
error
Caller-owned text buffer. On failure the library writes the reason here.
Returns JME_OK (0) or JME_ERR (-1). On JME_ERR, read error. The output arguments are written as the description says.
jme_jpl_constant_string
What it does Reads a text kernel constant by name.
When to use it Use this for a kernel constant that is a string rather than a number.
Where it fits value is your buffer.
jme_jpl_constant_string(name, value, value_size, error)
name
Name to look up, or the buffer that receives a name.
value
Receives one numeric kernel constant.
value_size
Size of one text value, in bytes.
error
Caller-owned text buffer. On failure the library writes the reason here.
Returns JME_OK (0) or JME_ERR (-1). On JME_ERR, read error. The output arguments are written as the description says.
jme_jpl_constant_string_vector
What it does Reads a kernel constant that is a list of strings.
When to use it Use this when the constant is several text values.
Where it fits Each slot is single_value_size bytes.
jme_jpl_constant_string_vector(name, values, single_value_size, value_count, error)
name
Name to look up, or the buffer that receives a name.
values
Receives several numeric kernel constants, or the text buffer for a string vector.
single_value_size
Size of each text slot in the string vector.
value_count
How many values to write.
error
Caller-owned text buffer. On failure the library writes the reason here.
Returns JME_OK (0) or JME_ERR (-1). On JME_ERR, read error. The output arguments are written as the description says.
jme_jpl_engine_version
What it does Copies the CALCEPH build version into buffer.
When to use it Call it in a diagnostic next to jme_version, so you can see the kernel library as well as JME.
Where it fits It does not need a kernel to be open.
jme_jpl_engine_version(buffer, buffer_size)
buffer
Caller-owned character buffer. The call writes the text here.
buffer_size
Size of buffer, in bytes, including room for the terminating zero.
Returns the text. When you pass buffer, the text is written there and the return points at that buffer.
jme_jpl_file_versionWhat it does Copies the open kernel's file version into buffer.
When to use it Use this to record which kernel edition produced a result.
Where it fits After jme_jpl_open.
jme_jpl_file_version(buffer, buffer_size, error)
buffer
Caller-owned character buffer. The call writes the text here.
buffer_size
Size of buffer, in bytes, including room for the terminating zero.
error
Caller-owned text buffer. On failure the library writes the reason here.
Returns JME_OK (0) or JME_ERR (-1). On JME_ERR, read error. The output arguments are written as the description says.
jme_jpl_current_file_data
What it does Reports the open kernel path and its coverage in one call.
When to use it Use this on a status screen instead of calling path and coverage separately.
Where it fits After jme_jpl_open.
jme_jpl_current_file_data(path, path_size, first_time, last_time, continuous, error)
path
Filesystem path. For a kernel this is the .bsp file or the directory that holds it.
path_size
Size of the path buffer, in bytes.
first_time
Receives the first time the kernel covers.
last_time
Receives the last time the kernel covers.
continuous
Receives non-zero when the coverage has no gap.
error
Caller-owned text buffer. On failure the library writes the reason here.
Returns JME_OK (0) or JME_ERR (-1). On JME_ERR, read error. The output arguments are written as the description says.
jme_jpl_is_availableWhat it does Reports whether this build of JME was linked with CALCEPH.
When to use it Call it before you offer a JPL mode. A build without CALCEPH cannot open a kernel.
Where it fits Startup. The analytical engines still work when this returns false.
jme_jpl_is_available()
Returns the integer result named above. A status-style return uses JME_OK and JME_ERR.
jme_jpl_is_openWhat it does Reports whether a kernel is currently open.
When to use it Call it before a low-level state read.
Where it fits After jme_jpl_open or jme_jpl_close.
jme_jpl_is_open()
Returns the integer result named above. A status-style return uses JME_OK and JME_ERR.
jme_jpl_openWhat it does Opens one kernel file for the low-level JPL calls.
When to use it Call it when you will use jme_jpl_body_state rather than jme_calc.
Where it fits A planet-centre that lives in a second file needs jme_jpl_open_array.
jme_jpl_open(path, error)
path
Filesystem path. For a kernel this is the .bsp file or the directory that holds it.
error
Caller-owned text buffer. On failure the library writes the reason here.
Returns JME_OK (0) or JME_ERR (-1). On JME_ERR, read error. The output arguments are written as the description says.
jme_jpl_open_arrayWhat it does Opens several kernel files together.
When to use it Use this for a planetary kernel plus the satellite kernels that hold planet centres.
Where it fits paths lists the files. This is how you avoid substituting a system barycentre.
jme_jpl_open_array(path_count, paths, error)
path_count
How many kernel paths are in the list.
paths
List of kernel paths to open together, for a planet kernel plus its satellite kernels.
error
Caller-owned text buffer. On failure the library writes the reason here.
Returns JME_OK (0) or JME_ERR (-1). On JME_ERR, read error. The output arguments are written as the description says.
jme_jpl_prefetchWhat it does Asks the kernel library to read ahead.
When to use it Use this before a tight loop of state calls when you want the file cached.
Where it fits After the kernel is open, before the loop.
jme_jpl_prefetch(error)
error
Caller-owned text buffer. On failure the library writes the reason here.
Returns JME_OK (0) or JME_ERR (-1). On JME_ERR, read error. The output arguments are written as the description says.
jme_jpl_is_thread_safe
What it does Reports whether this CALCEPH build may be called from more than one thread.
When to use it Call it before you share one open kernel across threads.
Where it fits A negative answer means you keep the JPL calls on one thread.
jme_jpl_is_thread_safe(error)
error
Caller-owned text buffer. On failure the library writes the reason here.
Returns JME_OK (0) or JME_ERR (-1). On JME_ERR, read error. The output arguments are written as the description says.
jme_jpl_id_by_nameWhat it does Looks up a kernel object id from its name.
When to use it Use this when the user has a kernel name and the state call wants an id.
Where it fits After the kernel is open.
jme_jpl_id_by_name(name, id, error)
name
Name to look up, or the buffer that receives a name.
id
Receives a body or kernel id.
error
Caller-owned text buffer. On failure the library writes the reason here.
Returns JME_OK (0) or JME_ERR (-1). On JME_ERR, read error. The output arguments are written as the description says.
jme_jpl_name_by_idWhat it does Looks up a kernel object name from its id.
When to use it Use this to label a NAIF id.
Where it fits After the kernel is open.
jme_jpl_name_by_id(id, name, name_size, error)
id
Receives a body or kernel id.
name
Name to look up, or the buffer that receives a name.
name_size
Size of the name buffer, in bytes.
error
Caller-owned text buffer. On failure the library writes the reason here.
Returns JME_OK (0) or JME_ERR (-1). On JME_ERR, read error. The output arguments are written as the description says.
jme_jpl_max_supported_order
What it does Returns the highest derivative order a kernel segment type can provide.
When to use it Call it before jme_jpl_body_state_order when you might ask for a derivative the segment does not have.
Where it fits segment_type comes from a record-index call.
jme_jpl_max_supported_order(segment_type)
segment_type
Kernel segment type, used to ask which derivative order that segment can return.
Returns the integer result named above. A status-style return uses JME_OK and JME_ERR.
jme_jpl_position_record_count
What it does Returns how many position records the open kernel contains.
When to use it Use this before you loop with jme_jpl_position_record_index.
Where it fits A kernel inventory.
jme_jpl_position_record_count(error)
error
Caller-owned text buffer. On failure the library writes the reason here.
Returns JME_OK (0) or JME_ERR (-1). On JME_ERR, read error. The output arguments are written as the description says.
jme_jpl_position_record_index
What it does Reads one position record: target, centre, time span, frame, and segment type.
When to use it Use this to see which bodies the file can actually compute.
Where it fits Index runs from zero to one less than the record count.
jme_jpl_position_record_index(index, target, center, first_time, last_time, frame, segment_type, error)
index
Zero-based index into the kernel list you are reading.
target
Receives the target id of one kernel record.
center
Body id used as the origin instead of the default centre.
first_time
Receives the first time the kernel covers.
last_time
Receives the last time the kernel covers.
frame
Receives the frame id of one kernel record.
segment_type
Kernel segment type, used to ask which derivative order that segment can return.
error
Caller-owned text buffer. On failure the library writes the reason here.
Returns JME_OK (0) or JME_ERR (-1). On JME_ERR, read error. The output arguments are written as the description says.
jme_jpl_orientation_state_naif
What it does Reads the orientation state from the open kernel at one Julian date on the kernel's native time scale (TDB or TCB), identified by NAIF ids. unit selects radians per day or radians per second.
When to use it Use this low-level read when you have one Julian date already expressed on the kernel time scale and you want the kernel vector rather than the ecliptic place from jme_calc.
Where it fits After jme_jpl_open. Do not pass UT here. For a civil clock and an ecliptic longitude, use jme_calc_ut.
jme_jpl_orientation_state_naif(jd_time, target_naif, unit, state, error)
jd_time
Input or output for this call. The name is the shared argument name.
target_naif
NAIF id of the object, as stored in the kernel.
unit
Output unit. Position calls use a JME_VECTOR_* id. Orientation calls use a JME_ORIENTATION_* id.
state
Caller-owned state array. Position calls use six numbers: position, then velocity.
error
Caller-owned text buffer. On failure the library writes the reason here.
Returns JME_OK (0) or JME_ERR (-1). On JME_ERR, read error. The output arguments are written as the description says.
jme_jpl_orientation_state_split_naif
What it does Reads the orientation state from the open kernel at a split Julian date (jd0 + time_offset) on the kernel's native time scale, identified by NAIF ids. unit selects radians per day or radians per second.
When to use it Use this low-level read when you already hold a split Julian date and need to keep that split and you want the kernel vector rather than the ecliptic place from jme_calc.
Where it fits After jme_jpl_open. Do not pass UT here. For a civil clock and an ecliptic longitude, use jme_calc_ut.
jme_jpl_orientation_state_split_naif(jd0, time_offset, target_naif, unit, state, error)
jd0
Coarse part of a split Julian date on the kernel time scale.
time_offset
Small part added to jd0, so the split date keeps its digits.
target_naif
NAIF id of the object, as stored in the kernel.
unit
Output unit. Position calls use a JME_VECTOR_* id. Orientation calls use a JME_ORIENTATION_* id.
state
Caller-owned state array. Position calls use six numbers: position, then velocity.
error
Caller-owned text buffer. On failure the library writes the reason here.
Returns JME_OK (0) or JME_ERR (-1). On JME_ERR, read error. The output arguments are written as the description says.
jme_jpl_orientation_state_order_naif
What it does Reads the orientation state from the open kernel at a split Julian date (jd0 + time_offset) on the kernel's native time scale, identified by NAIF ids. order asks for derivatives beyond velocity. unit selects radians per day or radians per second.
When to use it Use this low-level read when you already hold a split Julian date and need to keep that split and you want the kernel vector rather than the ecliptic place from jme_calc.
Where it fits After jme_jpl_open. Do not pass UT here. For a civil clock and an ecliptic longitude, use jme_calc_ut.
jme_jpl_orientation_state_order_naif(jd0, time_offset, target_naif, unit, order, state, error)
jd0
Coarse part of a split Julian date on the kernel time scale.
time_offset
Small part added to jd0, so the split date keeps its digits.
target_naif
NAIF id of the object, as stored in the kernel.
unit
Output unit. Position calls use a JME_VECTOR_* id. Orientation calls use a JME_ORIENTATION_* id.
order
Highest derivative to return. Zero is position only.
state
Caller-owned state array. Position calls use six numbers: position, then velocity.
error
Caller-owned text buffer. On failure the library writes the reason here.
Returns JME_OK (0) or JME_ERR (-1). On JME_ERR, read error. The output arguments are written as the description says.
jme_jpl_orientation_state_utc_naif
What it does Reads the orientation state from the open kernel at a UTC calendar date, converted inside the call onto the kernel time scale, identified by NAIF ids. unit selects radians per day or radians per second.
When to use it Use this low-level read when the time you have is a UTC calendar date and you want the kernel vector rather than the ecliptic place from jme_calc.
Where it fits After jme_jpl_open. Do not pass UT here. For a civil clock and an ecliptic longitude, use jme_calc_ut.
jme_jpl_orientation_state_utc_naif(year, month, day, hour, minute, second, calendar, target_naif, unit, state, error)
year
Calendar year. Astronomical year numbering, so 1 BCE is year 0.
month
Month number from 1 to 12.
day
Day of the month.
hour
Hour. Where the call takes a decimal hour, fractions of an hour are allowed.
minute
Minute.
second
Second, including the fraction. A leap second 60 is accepted only on a UTC path that validates it.
calendar
JME_CALENDAR_GREGORIAN or JME_CALENDAR_JULIAN.
target_naif
NAIF id of the object, as stored in the kernel.
unit
Output unit. Position calls use a JME_VECTOR_* id. Orientation calls use a JME_ORIENTATION_* id.
state
Caller-owned state array. Position calls use six numbers: position, then velocity.
error
Caller-owned text buffer. On failure the library writes the reason here.
Returns JME_OK (0) or JME_ERR (-1). On JME_ERR, read error. The output arguments are written as the description says.
jme_jpl_rotational_angular_momentum_state_naif
What it does Reads the rotational angular-momentum state from the open kernel at one Julian date on the kernel's native time scale (TDB or TCB), identified by NAIF ids. unit selects radians per day or radians per second.
When to use it Use this low-level read when you have one Julian date already expressed on the kernel time scale and you want the kernel vector rather than the ecliptic place from jme_calc.
Where it fits After jme_jpl_open. Do not pass UT here. For a civil clock and an ecliptic longitude, use jme_calc_ut.
jme_jpl_rotational_angular_momentum_state_naif(jd_time, target_naif, unit, state, error)
jd_time
Input or output for this call. The name is the shared argument name.
target_naif
NAIF id of the object, as stored in the kernel.
unit
Output unit. Position calls use a JME_VECTOR_* id. Orientation calls use a JME_ORIENTATION_* id.
state
Caller-owned state array. Position calls use six numbers: position, then velocity.
error
Caller-owned text buffer. On failure the library writes the reason here.
Returns JME_OK (0) or JME_ERR (-1). On JME_ERR, read error. The output arguments are written as the description says.
jme_jpl_rotational_angular_momentum_state_utc_naif
What it does Reads the rotational angular-momentum state from the open kernel at a UTC calendar date, converted inside the call onto the kernel time scale, identified by NAIF ids. unit selects radians per day or radians per second.
When to use it Use this low-level read when the time you have is a UTC calendar date and you want the kernel vector rather than the ecliptic place from jme_calc.
Where it fits After jme_jpl_open. Do not pass UT here. For a civil clock and an ecliptic longitude, use jme_calc_ut.
jme_jpl_rotational_angular_momentum_state_utc_naif(year, month, day, hour, minute, second, calendar, target_naif, unit, state, error)
year
Calendar year. Astronomical year numbering, so 1 BCE is year 0.
month
Month number from 1 to 12.
day
Day of the month.
hour
Hour. Where the call takes a decimal hour, fractions of an hour are allowed.
minute
Minute.
second
Second, including the fraction. A leap second 60 is accepted only on a UTC path that validates it.
calendar
JME_CALENDAR_GREGORIAN or JME_CALENDAR_JULIAN.
target_naif
NAIF id of the object, as stored in the kernel.
unit
Output unit. Position calls use a JME_VECTOR_* id. Orientation calls use a JME_ORIENTATION_* id.
state
Caller-owned state array. Position calls use six numbers: position, then velocity.
error
Caller-owned text buffer. On failure the library writes the reason here.
Returns JME_OK (0) or JME_ERR (-1). On JME_ERR, read error. The output arguments are written as the description says.
jme_jpl_rotational_angular_momentum_state_split_naif
What it does Reads the rotational angular-momentum state from the open kernel at a split Julian date (jd0 + time_offset) on the kernel's native time scale, identified by NAIF ids. unit selects radians per day or radians per second.
When to use it Use this low-level read when you already hold a split Julian date and need to keep that split and you want the kernel vector rather than the ecliptic place from jme_calc.
Where it fits After jme_jpl_open. Do not pass UT here. For a civil clock and an ecliptic longitude, use jme_calc_ut.
jme_jpl_rotational_angular_momentum_state_split_naif(jd0, time_offset, target_naif, unit, state, error)
jd0
Coarse part of a split Julian date on the kernel time scale.
time_offset
Small part added to jd0, so the split date keeps its digits.
target_naif
NAIF id of the object, as stored in the kernel.
unit
Output unit. Position calls use a JME_VECTOR_* id. Orientation calls use a JME_ORIENTATION_* id.
state
Caller-owned state array. Position calls use six numbers: position, then velocity.
error
Caller-owned text buffer. On failure the library writes the reason here.
Returns JME_OK (0) or JME_ERR (-1). On JME_ERR, read error. The output arguments are written as the description says.
jme_jpl_rotational_angular_momentum_state_order_naif
What it does Reads the rotational angular-momentum state from the open kernel at a split Julian date (jd0 + time_offset) on the kernel's native time scale, identified by NAIF ids. order asks for derivatives beyond velocity. unit selects radians per day or radians per second.
When to use it Use this low-level read when you already hold a split Julian date and need to keep that split and you want the kernel vector rather than the ecliptic place from jme_calc.
Where it fits After jme_jpl_open. Do not pass UT here. For a civil clock and an ecliptic longitude, use jme_calc_ut.
jme_jpl_rotational_angular_momentum_state_order_naif(jd0, time_offset, target_naif, unit, order, state, error)
jd0
Coarse part of a split Julian date on the kernel time scale.
time_offset
Small part added to jd0, so the split date keeps its digits.
target_naif
NAIF id of the object, as stored in the kernel.
unit
Output unit. Position calls use a JME_VECTOR_* id. Orientation calls use a JME_ORIENTATION_* id.
order
Highest derivative to return. Zero is position only.
state
Caller-owned state array. Position calls use six numbers: position, then velocity.
error
Caller-owned text buffer. On failure the library writes the reason here.
Returns JME_OK (0) or JME_ERR (-1). On JME_ERR, read error. The output arguments are written as the description says.
jme_jpl_orientation_record_count
What it does Returns how many orientation records the open kernel contains.
When to use it Use this before an orientation loop. Many planetary kernels have none.
Where it fits A kernel inventory.
jme_jpl_orientation_record_count(error)
error
Caller-owned text buffer. On failure the library writes the reason here.
Returns JME_OK (0) or JME_ERR (-1). On JME_ERR, read error. The output arguments are written as the description says.
jme_jpl_orientation_record_index
What it does Reads one orientation record: target, time span, frame, and segment type.
When to use it Use this to see whether a body has an orientation series.
Where it fits Index runs from zero to one less than the orientation record count.
jme_jpl_orientation_record_index(index, target, first_time, last_time, frame, segment_type, error)
index
Zero-based index into the kernel list you are reading.
target
Receives the target id of one kernel record.
first_time
Receives the first time the kernel covers.
last_time
Receives the last time the kernel covers.
frame
Receives the frame id of one kernel record.
segment_type
Kernel segment type, used to ask which derivative order that segment can return.
error
Caller-owned text buffer. On failure the library writes the reason here.
Returns JME_OK (0) or JME_ERR (-1). On JME_ERR, read error. The output arguments are written as the description says.
jme_jpl_timescaleWhat it does Returns the native time scale of the open kernel, TDB or TCB.
When to use it Call it before a low-level state call so you pass a date on that scale.
Where it fits High-level jme_calc converts TT for you. These low-level calls do not.
jme_jpl_timescale()
Returns the integer result named above. A status-style return uses JME_OK and JME_ERR.
Function group
Start here for a Sun, Moon, planet, or node. jme_calc_ut is the usual call from a civil clock. The other calls in this group are appearance, names, or one chosen analytical series.
jme_calcWhat it does Computes a body position at Terrestrial Time.
When to use it Use this when the instant you have is already TT. For a civil clock, use jme_calc_ut.
Where it fits The usual planet, Sun, Moon, or node position. flags choose equatorial, rectangular, topocentric, sidereal, and the other frames.
jme_calc(jd_et, body, flags, results, error)
jd_et
Terrestrial Time (TT) as a Julian date.
body
Body id such as JME_BODY_SUN. The body constants list every id.
flags
Flag bits for this call. Pass 0 for the default. The constant group for this family lists the bits.
results
Six numbers you allocate. Indexes 0–2 are position. Indexes 3–5 are the rates. The call fills the rates even when JME_CALC_SPEED is absent.
error
Caller-owned text buffer. On failure the library writes the reason here.
Returns JME_OK or JME_ERR. On JME_OK, results holds six numbers: position in 0–2 and rates in 3–5.
jme_calc_utWhat it does Computes a body position at Universal Time.
When to use it Use this when the instant you have is UT, including a Julian date built from a civil clock.
Where it fits The usual entry for a chart or a panchang. The six results are position then rates.
jme_calc_ut(jd_ut, body, flags, results, error)
jd_ut
Universal Time as a Julian date. Use this when the clock you have is UT.
body
Body id such as JME_BODY_SUN. The body constants list every id.
flags
Flag bits for this call. Pass 0 for the default. The constant group for this family lists the bits.
results
Six numbers you allocate. Indexes 0–2 are position. Indexes 3–5 are the rates. The call fills the rates even when JME_CALC_SPEED is absent.
error
Caller-owned text buffer. On failure the library writes the reason here.
Returns JME_OK or JME_ERR. On JME_OK, results holds six numbers: position in 0–2 and rates in 3–5.
jme_calc_pctrWhat it does Computes a body position relative to an explicit centre, at Terrestrial Time.
When to use it Use this when the origin must be a chosen body, not the default geocentric or heliocentric centre.
Where it fits Relative positions, such as a moon of a planet seen from that planet, at TT.
jme_calc_pctr(jd_et, body, center, flags, results, error)
jd_et
Terrestrial Time (TT) as a Julian date.
body
Body id such as JME_BODY_SUN. The body constants list every id.
center
Body id used as the origin instead of the default centre.
flags
Flag bits for this call. Pass 0 for the default. The constant group for this family lists the bits.
results
Six numbers you allocate, same layout as jme_calc: position, then rates, relative to center.
error
Caller-owned text buffer. On failure the library writes the reason here.
Returns JME_OK or JME_ERR. On JME_OK, results holds six numbers: position in 0–2 and rates in 3–5.
jme_phenoWhat it does Computes appearance data for a body at Terrestrial Time, such as phase and elongation.
When to use it Use this when you need how the body looks, not its ecliptic longitude.
Where it fits After you already know the body and the TT date. The UT form is jme_pheno_ut.
jme_pheno(jd_et, body, flags, attr, error)
jd_et
Terrestrial Time (TT) as a Julian date.
body
Body id such as JME_BODY_SUN. The body constants list every id.
flags
Flag bits for this call. Pass 0 for the default. The constant group for this family lists the bits.
attr
Caller-owned array that receives the circumstance values for this call.
error
Caller-owned text buffer. On failure the library writes the reason here.
Returns JME_OK (0) or JME_ERR (-1). On JME_ERR, read error. The output arguments are written as the description says.
jme_pheno_utWhat it does Computes appearance data for a body at Universal Time.
When to use it Use this when the clock is UT and you need phase, elongation, and the related attributes.
Where it fits A planet panel or a lunar-phase display. For the longitude itself, use jme_calc_ut.
jme_pheno_ut(jd_ut, body, flags, attr, error)
jd_ut
Universal Time as a Julian date. Use this when the clock you have is UT.
body
Body id such as JME_BODY_SUN. The body constants list every id.
flags
Flag bits for this call. Pass 0 for the default. The constant group for this family lists the bits.
attr
Caller-owned array that receives the circumstance values for this call.
error
Caller-owned text buffer. On failure the library writes the reason here.
Returns JME_OK (0) or JME_ERR (-1). On JME_ERR, read error. The output arguments are written as the description says.
jme_heliacal_pheno_ut
What it does Computes the heliacal appearance attributes at a known Universal Time.
When to use it Use this when the time is already chosen and you need the visibility circumstances.
Where it fits The attribute pair of the heliacal search.
jme_heliacal_pheno_ut(jd_ut, geopos, dat_hel, error)
jd_ut
Universal Time as a Julian date. Use this when the clock you have is UT.
geopos
Observer longitude, latitude, and height, in that order, in degrees and metres.
dat_hel
Caller-owned array of the shared heliacal inputs: place, atmosphere, and object data.
error
Caller-owned text buffer. On failure the library writes the reason here.
Returns JME_OK (0) or JME_ERR (-1). On JME_ERR, read error. The output arguments are written as the description says.
jme_matrix_transform_state
What it does Applies a 3 by 3 matrix to a Cartesian state.
When to use it Use this after you have built a precession or nutation matrix and you still hold x, y, z and their rates.
Where it fits input and output are states. output is caller-owned.
jme_matrix_transform_state(m, input, output)
m
Caller-owned rotation matrix, nine numbers, row by row.
input
State or matrix going in.
output
Caller-owned state or matrix coming out.
Returns nothing. The call writes its output arguments, or it changes a library setting for later calls.
jme_body_id_from_name
What it does Returns the body id for a name such as Sun or Moon.
When to use it Use this when a user typed a name and the calculation calls want an id.
Where it fits A name that is not a body returns an id you should test before jme_calc.
jme_body_id_from_name(name)
name
Name to look up, or the buffer that receives a name.
Returns the integer result named above. A status-style return uses JME_OK and JME_ERR.
jme_body_nameWhat it does Returns the library's name for a body id.
When to use it Use this to label a JME_BODY_* value.
Where it fits The pointer is library-owned text. Copy it if you need to keep it.
jme_body_name(body)
body
Body id such as JME_BODY_SUN. The body constants list every id.
Returns library-owned text. Generated names for Asteroid 013..110, Comet 001..060, and Minor Planet 001..060 use a thread-local buffer, overwritten by the next generated body name returned on the same thread. Copy the text if you need to keep it.
jme_copy_body_nameWhat it does Copies a body name into your buffer.
When to use it Use this when the binding must own the string.
Where it fits Safer than holding the pointer from jme_body_name across later calls.
jme_copy_body_name(body, buffer)
body
Body id such as JME_BODY_SUN. The body constants list every id.
buffer
Caller-owned character buffer. The call writes the text here.
Returns the text. When you pass buffer, the text is written there and the return points at that buffer.
jme_body_naif_idWhat it does Returns the NAIF id that corresponds to a JME body id.
When to use it Use this before a jme_jpl_*_naif call when you started from JME_BODY_*.
Where it fits Kernel code. The reverse lookup is jme_jpl_name_by_id.
jme_body_naif_id(body)
body
Body id such as JME_BODY_SUN. The body constants list every id.
Returns the integer result named above. A status-style return uses JME_OK and JME_ERR.
jme_ecliptic_to_equatorial_rectangular_state
What it does Rotates an ecliptic Cartesian state onto the equator.
When to use it Use this when you hold x, y, z and their rates, not spherical angles.
Where it fits eps is the obliquity. The reverse is the equatorial-to-ecliptic state call.
jme_ecliptic_to_equatorial_rectangular_state(ecliptic, eps, equatorial)
ecliptic
Ecliptic rectangular state.
eps
Obliquity of the ecliptic, in degrees, at the date you are using.
equatorial
Equatorial rectangular state.
Returns the integer result named above. A status-style return uses JME_OK and JME_ERR.
jme_equatorial_to_ecliptic_rectangular_state
What it does Rotates an equatorial Cartesian state onto the ecliptic.
When to use it Use this for a rectangular state that must be expressed in ecliptic axes.
Where it fits The reverse of the ecliptic-to-equatorial state call.
jme_equatorial_to_ecliptic_rectangular_state(equatorial, eps, ecliptic)
equatorial
Equatorial rectangular state.
eps
Obliquity of the ecliptic, in degrees, at the date you are using.
ecliptic
Ecliptic rectangular state.
Returns the integer result named above. A status-style return uses JME_OK and JME_ERR.
jme_spherical_to_rectangular_state
What it does Converts a spherical state to a rectangular state.
When to use it Use this when a later kernel-style step wants x, y, z and rates.
Where it fits The reverse is jme_rectangular_to_spherical_state.
jme_spherical_to_rectangular_state(spherical, rectangular)
spherical
Spherical state: longitude, latitude, distance, and their rates.
rectangular
Rectangular state: x, y, z, and their rates.
Returns the integer result named above. A status-style return uses JME_OK and JME_ERR.
jme_rectangular_to_spherical_state
What it does Converts a rectangular state to longitude, latitude, distance, and their rates.
When to use it Use this after a rectangular kernel read when you want spherical coordinates.
Where it fits The reverse is jme_spherical_to_rectangular_state.
jme_rectangular_to_spherical_state(rectangular, spherical)
rectangular
Rectangular state: x, y, z, and their rates.
spherical
Spherical state: longitude, latitude, distance, and their rates.
Returns the integer result named above. A status-style return uses JME_OK and JME_ERR.
jme_state_distanceWhat it does Returns the distance from the position part of a Cartesian state.
When to use it Use this when you have x, y, z and need the range.
Where it fits A state from jme_jpl_body_state or a rectangular conversion.
jme_state_distance(state)
state
Caller-owned state array. Position calls use six numbers: position, then velocity.
Returns the number described above. A non-finite value means the call could not produce that number.
jme_state_convert_units
What it does Converts a Cartesian state between AU and kilometres, and between per day and per second.
When to use it Use this when a kernel vector must be shown in kilometres per second, or the reverse.
Where it fits input_unit and output_unit are JME_VECTOR_* ids.
jme_state_convert_units(input, input_unit, output_unit, output)
input
State or matrix going in.
input_unit
Unit of the input state, a JME_VECTOR_* id.
output_unit
Unit wanted in the output state, a JME_VECTOR_* id.
output
Caller-owned state or matrix coming out.
Returns the integer result named above. A status-style return uses JME_OK and JME_ERR.
jme_state_light_time_days
What it does Returns the light time of a state, in days.
When to use it Use this when you need the light-time delay of a distance you already hold.
Where it fits unit says whether the state is in AU or kilometres.
jme_state_light_time_days(state, unit)
state
Caller-owned state array. Position calls use six numbers: position, then velocity.
unit
Output unit. Position calls use a JME_VECTOR_* id. Orientation calls use a JME_ORIENTATION_* id.
Returns the number described above. A non-finite value means the call could not produce that number.
jme_state_position_velocity_dot
What it does Returns the dot product of the position and velocity parts of a state.
When to use it Use this in your own range-rate geometry.
Where it fits A 6-number state.
jme_state_position_velocity_dot(state)
state
Caller-owned state array. Position calls use six numbers: position, then velocity.
Returns the number described above. A non-finite value means the call could not produce that number.
jme_state_speedWhat it does Returns the speed from the velocity part of a state.
When to use it Use this to show how fast the body is moving in the state's unit.
Where it fits It does not recompute a position.
jme_state_speed(state)
state
Caller-owned state array. Position calls use six numbers: position, then velocity.
Returns the number described above. A non-finite value means the call could not produce that number.
jme_state_addWhat it does Adds two Cartesian states.
When to use it Use this to combine a barycentric vector with an offset you already have.
Where it fits output is caller-owned.
jme_state_add(left, right, output)
left
First state in the sum or difference.
right
Second state in the sum or difference.
output
Caller-owned state or matrix coming out.
Returns the integer result named above. A status-style return uses JME_OK and JME_ERR.
jme_state_scaleWhat it does Multiplies every component of a state by a factor.
When to use it Use this for a unit scale the conversion helper does not cover.
Where it fits output is caller-owned.
jme_state_scale(input, factor, output)
input
State or matrix going in.
factor
Number to multiply every component by.
output
Caller-owned state or matrix coming out.
Returns the integer result named above. A status-style return uses JME_OK and JME_ERR.
jme_state_subtractWhat it does Subtracts one Cartesian state from another.
When to use it Use this to change the origin of a vector, when both states share a frame and a unit.
Where it fits output is caller-owned.
jme_state_subtract(left, right, output)
left
First state in the sum or difference.
right
Second state in the sum or difference.
output
Caller-owned state or matrix coming out.
Returns the integer result named above. A status-style return uses JME_OK and JME_ERR.
jme_vsop87_planet_state
What it does Computes a planet with the VSOP87 series at Terrestrial Time.
When to use it Use this only when you want VSOP87 specifically, not the engine selected by jme_set_astro_models.
Where it fits A direct theory call. For the normal position, use jme_calc.
jme_vsop87_planet_state(jd_et, body, results)
jd_et
Terrestrial Time (TT) as a Julian date.
body
Body id such as JME_BODY_SUN. The body constants list every id.
results
Caller-owned output array. Allocate it before the call.
Returns the integer result named above. A status-style return uses JME_OK and JME_ERR.
jme_meeus_sun_stateWhat it does Computes the Sun with the Meeus series at Terrestrial Time.
When to use it Use this when you want that solar series specifically.
Where it fits A direct theory call. The engine switch does not apply.
jme_meeus_sun_state(jd_et, results)
jd_et
Terrestrial Time (TT) as a Julian date.
results
Caller-owned output array. Allocate it before the call.
Returns the integer result named above. A status-style return uses JME_OK and JME_ERR.
jme_meeus_moon_stateWhat it does Computes the Moon with the Meeus series at Terrestrial Time.
When to use it Use this when you want that lunar series specifically.
Where it fits A direct theory call.
jme_meeus_moon_state(jd_et, results)
jd_et
Terrestrial Time (TT) as a Julian date.
results
Caller-owned output array. Allocate it before the call.
Returns the integer result named above. A status-style return uses JME_OK and JME_ERR.
jme_elp2000_moon_state
What it does Computes the Moon with ELP2000-82B at Terrestrial Time.
When to use it Use this when you want ELP specifically.
Where it fits A direct theory call. The high-level engine can select this series for you.
jme_elp2000_moon_state(jd_et, results)
jd_et
Terrestrial Time (TT) as a Julian date.
results
Caller-owned output array. Allocate it before the call.
Returns the integer result named above. A status-style return uses JME_OK and JME_ERR.
jme_meeus_planet_state
What it does Computes a planet with the Meeus planetary series at Terrestrial Time.
When to use it Use this when you want that series specifically.
Where it fits A direct theory call.
jme_meeus_planet_state(jd_et, body, results)
jd_et
Terrestrial Time (TT) as a Julian date.
body
Body id such as JME_BODY_SUN. The body constants list every id.
results
Caller-owned output array. Allocate it before the call.
Returns the integer result named above. A status-style return uses JME_OK and JME_ERR.
jme_moshier_planet_state
What it does Computes a body with the Moshier analytical theory at Terrestrial Time.
When to use it Use this when you want Moshier specifically, including in a comparison against JPL.
Where it fits A direct theory call. ENGINE=MOSHIER on jme_calc is the usual way to select it.
jme_moshier_planet_state(jd_et, body, results)
jd_et
Terrestrial Time (TT) as a Julian date.
body
Body id such as JME_BODY_SUN. The body constants list every id.
results
Caller-owned output array. Allocate it before the call.
Returns the integer result named above. A status-style return uses JME_OK and JME_ERR.
Function group
Use these when the result you want is a time: a rise, a set, a transit, or the moment a longitude is reached. The start date is where the search begins.
jme_rise_transWhat it does Finds the next rise, set, or transit of a body or star at a place.
When to use it Use this for the time the object crosses the horizon or the meridian.
Where it fits A panchang sunrise, moonrise, or a planet rise. rsmi is a JME_RISE_* value. The UT date is the search start.
jme_rise_trans(jd_ut, body, starname, flags, rsmi, geopos, atpress, attemp, tret, error)
jd_ut
Universal Time as a Julian date. Use this when the clock you have is UT.
body
Body id such as JME_BODY_SUN. The body constants list every id.
starname
Star name. Use an empty string when the call is for a solar-system body.
flags
Flag bits for this call. Pass 0 for the default. The constant group for this family lists the bits.
rsmi
What to find: a JME_RISE_* value such as rise, set, transit, or a twilight.
geopos
Observer longitude, latitude, and height, in that order, in degrees and metres.
atpress
Atmospheric pressure at the observer, in millibars.
attemp
Atmospheric temperature at the observer, in degrees Celsius.
tret
Caller-owned array of Julian dates. The description says which index is which event.
error
Caller-owned text buffer. On failure the library writes the reason here.
Returns JME_OK (0) or JME_ERR (-1). On JME_ERR, read error. The output arguments are written as the description says.
jme_rise_trans_true_hor
What it does Finds rise, set, or transit against a horizon you raise or lower.
When to use it Use this when the local horizon is not the geometric one, for example a hill of known altitude.
Where it fits Same inputs as jme_rise_trans, plus horhgt in degrees.
jme_rise_trans_true_hor(jd_ut, body, starname, flags, rsmi, geopos, atpress, attemp, horhgt, tret, error)
jd_ut
Universal Time as a Julian date. Use this when the clock you have is UT.
body
Body id such as JME_BODY_SUN. The body constants list every id.
starname
Star name. Use an empty string when the call is for a solar-system body.
flags
Flag bits for this call. Pass 0 for the default. The constant group for this family lists the bits.
rsmi
What to find: a JME_RISE_* value such as rise, set, transit, or a twilight.
geopos
Observer longitude, latitude, and height, in that order, in degrees and metres.
atpress
Atmospheric pressure at the observer, in millibars.
attemp
Atmospheric temperature at the observer, in degrees Celsius.
horhgt
Height of the local horizon above the geometric horizon, in degrees.
tret
Caller-owned array of Julian dates. The description says which index is which event.
error
Caller-owned text buffer. On failure the library writes the reason here.
Returns JME_OK (0) or JME_ERR (-1). On JME_ERR, read error. The output arguments are written as the description says.
jme_solcrossWhat it does Finds when the Sun next reaches an ecliptic longitude, on the Terrestrial Time entry.
When to use it Use this when your start instant is TT.
Where it fits Ingress and sankranti calculations. The UT entry is jme_solcross_ut.
jme_solcross(x2cross, jd_ut, flags, tret, error)
x2cross
Ecliptic longitude to reach, in degrees.
jd_ut
Universal Time as a Julian date. Use this when the clock you have is UT.
flags
Flag bits for this call. Pass 0 for the default. The constant group for this family lists the bits.
tret
Caller-owned array of Julian dates. The description says which index is which event.
error
Caller-owned text buffer. On failure the library writes the reason here.
Returns JME_OK (0) or JME_ERR (-1). On JME_ERR, read error. The output arguments are written as the description says.
jme_solcross_utWhat it does Finds when the Sun next reaches an ecliptic longitude, starting from Universal Time.
When to use it Use this for a civil date and a target longitude such as 0° for the March equinox longitude.
Where it fits A calendar of solar ingresses.
jme_solcross_ut(x2cross, jd_ut, flags, tret, error)
x2cross
Ecliptic longitude to reach, in degrees.
jd_ut
Universal Time as a Julian date. Use this when the clock you have is UT.
flags
Flag bits for this call. Pass 0 for the default. The constant group for this family lists the bits.
tret
Caller-owned array of Julian dates. The description says which index is which event.
error
Caller-owned text buffer. On failure the library writes the reason here.
Returns JME_OK (0) or JME_ERR (-1). On JME_ERR, read error. The output arguments are written as the description says.
jme_mooncrossWhat it does Finds when the Moon next reaches an ecliptic longitude, on the Terrestrial Time entry.
When to use it Use this when the start instant is TT.
Where it fits Tithi or nakshatra boundaries when you already hold TT.
jme_mooncross(x2cross, jd_ut, flags, tret, error)
x2cross
Ecliptic longitude to reach, in degrees.
jd_ut
Universal Time as a Julian date. Use this when the clock you have is UT.
flags
Flag bits for this call. Pass 0 for the default. The constant group for this family lists the bits.
tret
Caller-owned array of Julian dates. The description says which index is which event.
error
Caller-owned text buffer. On failure the library writes the reason here.
Returns JME_OK (0) or JME_ERR (-1). On JME_ERR, read error. The output arguments are written as the description says.
jme_mooncross_utWhat it does Finds when the Moon next reaches an ecliptic longitude, starting from Universal Time.
When to use it Use this for rashi, nakshatra, or tithi edges from a civil clock.
Where it fits The usual lunar-ingress search.
jme_mooncross_ut(x2cross, jd_ut, flags, tret, error)
x2cross
Ecliptic longitude to reach, in degrees.
jd_ut
Universal Time as a Julian date. Use this when the clock you have is UT.
flags
Flag bits for this call. Pass 0 for the default. The constant group for this family lists the bits.
tret
Caller-owned array of Julian dates. The description says which index is which event.
error
Caller-owned text buffer. On failure the library writes the reason here.
Returns JME_OK (0) or JME_ERR (-1). On JME_ERR, read error. The output arguments are written as the description says.
jme_mooncross_nodeWhat it does Finds when the Moon next reaches its node, on the Terrestrial Time entry.
When to use it Use this when the start instant is TT and you want the nodal passage.
Where it fits Eclipse seasons. The UT entry is jme_mooncross_node_ut.
jme_mooncross_node(jd_ut, flags, tret, error)
jd_ut
Universal Time as a Julian date. Use this when the clock you have is UT.
flags
Flag bits for this call. Pass 0 for the default. The constant group for this family lists the bits.
tret
Caller-owned array of Julian dates. The description says which index is which event.
error
Caller-owned text buffer. On failure the library writes the reason here.
Returns JME_OK (0) or JME_ERR (-1). On JME_ERR, read error. The output arguments are written as the description says.
jme_mooncross_node_ut
What it does Finds when the Moon next reaches its node, starting from Universal Time.
When to use it Use this from a civil date.
Where it fits The UT pair of jme_mooncross_node.
jme_mooncross_node_ut(jd_ut, flags, tret, error)
jd_ut
Universal Time as a Julian date. Use this when the clock you have is UT.
flags
Flag bits for this call. Pass 0 for the default. The constant group for this family lists the bits.
tret
Caller-owned array of Julian dates. The description says which index is which event.
error
Caller-owned text buffer. On failure the library writes the reason here.
Returns JME_OK (0) or JME_ERR (-1). On JME_ERR, read error. The output arguments are written as the description says.
jme_helio_crossWhat it does Finds when a body's heliocentric longitude next reaches a target, on the Terrestrial Time entry.
When to use it Use this for a heliocentric ingress when you have TT.
Where it fits Outer-planet heliocentric work. The UT entry is jme_helio_cross_ut.
jme_helio_cross(body, x2cross, jd_ut, flags, tret, error)
body
Body id such as JME_BODY_SUN. The body constants list every id.
x2cross
Ecliptic longitude to reach, in degrees.
jd_ut
Universal Time as a Julian date. Use this when the clock you have is UT.
flags
Flag bits for this call. Pass 0 for the default. The constant group for this family lists the bits.
tret
Caller-owned array of Julian dates. The description says which index is which event.
error
Caller-owned text buffer. On failure the library writes the reason here.
Returns JME_OK (0) or JME_ERR (-1). On JME_ERR, read error. The output arguments are written as the description says.
jme_helio_cross_utWhat it does Finds when a body's heliocentric longitude next reaches a target, starting from Universal Time.
When to use it Use this when the clock is UT.
Where it fits The UT pair of jme_helio_cross.
jme_helio_cross_ut(body, x2cross, jd_ut, flags, tret, error)
body
Body id such as JME_BODY_SUN. The body constants list every id.
x2cross
Ecliptic longitude to reach, in degrees.
jd_ut
Universal Time as a Julian date. Use this when the clock you have is UT.
flags
Flag bits for this call. Pass 0 for the default. The constant group for this family lists the bits.
tret
Caller-owned array of Julian dates. The description says which index is which event.
error
Caller-owned text buffer. On failure the library writes the reason here.
Returns JME_OK (0) or JME_ERR (-1). On JME_ERR, read error. The output arguments are written as the description says.
jme_heliacal_utWhat it does Searches heliacal rising or setting phenomena at a place.
When to use it Use this for first or last visibility, not for the geometric sunrise.
Where it fits A visibility calendar. dat_hel carries the shared atmosphere and object inputs.
jme_heliacal_ut(jd_ut, geopos, dat_hel, error)
jd_ut
Universal Time as a Julian date. Use this when the clock you have is UT.
geopos
Observer longitude, latitude, and height, in that order, in degrees and metres.
dat_hel
Caller-owned array of the shared heliacal inputs: place, atmosphere, and object data.
error
Caller-owned text buffer. On failure the library writes the reason here.
Returns JME_OK (0) or JME_ERR (-1). On JME_ERR, read error. The output arguments are written as the description says.
jme_vis_limit_magWhat it does Estimates the limiting visual magnitude at a place and time.
When to use it Use this to decide whether an object is bright enough to see in those conditions.
Where it fits Before or beside a heliacal call, with the same dat_hel inputs.
jme_vis_limit_mag(jd_ut, geopos, dat_hel, error)
jd_ut
Universal Time as a Julian date. Use this when the clock you have is UT.
geopos
Observer longitude, latitude, and height, in that order, in degrees and metres.
dat_hel
Caller-owned array of the shared heliacal inputs: place, atmosphere, and object data.
error
Caller-owned text buffer. On failure the library writes the reason here.
Returns JME_OK (0) or JME_ERR (-1). On JME_ERR, read error. The output arguments are written as the description says.
jme_heliacal_angleWhat it does Returns the heliacal angle used by the visibility routines.
When to use it Use this when you need that angle itself rather than a search time.
Where it fits A visibility diagram.
jme_heliacal_angle(jd_ut, geopos, dat_hel, error)
jd_ut
Universal Time as a Julian date. Use this when the clock you have is UT.
geopos
Observer longitude, latitude, and height, in that order, in degrees and metres.
dat_hel
Caller-owned array of the shared heliacal inputs: place, atmosphere, and object data.
error
Caller-owned text buffer. On failure the library writes the reason here.
Returns the number described above. A non-finite value means the call could not produce that number.
jme_topo_arcus_visionis
What it does Returns the topocentric arcus visionis for the heliacal inputs.
When to use it Use this when a traditional visibility rule asks for the arcus visionis.
Where it fits The same dat_hel setup as the other heliacal calls.
jme_topo_arcus_visionis(jd_ut, geopos, dat_hel, error)
jd_ut
Universal Time as a Julian date. Use this when the clock you have is UT.
geopos
Observer longitude, latitude, and height, in that order, in degrees and metres.
dat_hel
Caller-owned array of the shared heliacal inputs: place, atmosphere, and object data.
error
Caller-owned text buffer. On failure the library writes the reason here.
Returns the number described above. A non-finite value means the call could not produce that number.
Function group
Use these for the clock and the zodiac: Julian dates, Delta-T, sidereal time, and the ayanamsa. Most position calls take a Julian date you build here.
jme_set_sidereal_mode
What it does Selects the ayanamsa used by later sidereal longitudes.
When to use it Call it before a calculation that passes JME_CALC_SIDEREAL, or before an ayanamsa read that should follow the library setting.
Where it fits Once per chart style. For a user ayanamsa, pass JME_SIDEREAL_USER with t0 and ayan_t0.
jme_set_sidereal_mode(sidereal_mode, t0, ayan_t0)
sidereal_mode
Ayanamsa id from the JME_SIDEREAL_* constants.
t0
Reference epoch for a user ayanamsa, as a Julian date.
ayan_t0
Ayanamsa at t0, in degrees, for the user mode.
Returns nothing. The call writes its output arguments, or it changes a library setting for later calls.
jme_get_sidereal_mode
What it does Reads the ayanamsa id and the user-mode epoch back out.
When to use it Call it when another part of the program must follow the mode already set.
Where it fits After jme_set_sidereal_mode.
jme_get_sidereal_mode(sidereal_mode, t0, ayan_t0)
sidereal_mode
Ayanamsa id from the JME_SIDEREAL_* constants.
t0
Reference epoch for a user ayanamsa, as a Julian date.
ayan_t0
Ayanamsa at t0, in degrees, for the user mode.
Returns nothing. The call writes its output arguments, or it changes a library setting for later calls.
jme_set_delta_t_userdef
What it does Fixes Delta-T at a constant number of seconds.
When to use it Use this when you must force TT minus UT, for a test or a historical convention.
Where it fits A non-finite dt clears the override and returns to the model.
jme_set_delta_t_userdef(dt)
dt
Delta-T in seconds. A non-finite value clears a user-defined Delta-T.
Returns nothing. The call writes its output arguments, or it changes a library setting for later calls.
jme_get_ayanamsa_name
What it does Returns the display name of an ayanamsa id.
When to use it Use this to label a JME_SIDEREAL_* value in a menu.
Where it fits A settings screen. The id does not have to be the active mode.
jme_get_ayanamsa_name(model)
model
Model id from the JME_MODEL_* or JME_SIDEREAL_* constants, depending on the call.
Returns a pointer to a static string.
jme_lmt_to_latWhat it does Converts local mean time to local apparent time at a longitude.
When to use it Use this when a clock is mean time and you need apparent solar time.
Where it fits It applies the equation of time. The reverse is jme_lat_to_lmt.
jme_lmt_to_lat(jd_lmt, geo_lon, jd_lat, error)
jd_lmt
Local mean time as a Julian date.
geo_lon
Geographic longitude in degrees. East is positive.
jd_lat
Local apparent time as a Julian date.
error
Caller-owned text buffer. On failure the library writes the reason here.
Returns JME_OK (0) or JME_ERR (-1). On JME_ERR, read error. The output arguments are written as the description says.
jme_lat_to_lmtWhat it does Converts local apparent time to local mean time at a longitude.
When to use it Use this when you have sundial time and need mean time.
Where it fits The reverse of jme_lmt_to_lat.
jme_lat_to_lmt(jd_lat, geo_lon, jd_lmt, error)
jd_lat
Local apparent time as a Julian date.
geo_lon
Geographic longitude in degrees. East is positive.
jd_lmt
Local mean time as a Julian date.
error
Caller-owned text buffer. On failure the library writes the reason here.
Returns JME_OK (0) or JME_ERR (-1). On JME_ERR, read error. The output arguments are written as the description says.
jme_centiseconds_to_time_string
What it does Formats a count of centiseconds as a clock string.
When to use it Use this to print a duration or a time of day you already hold in centiseconds.
Where it fits Display only. It does not compute an ephemeris time.
jme_centiseconds_to_time_string(cs, buffer)
cs
Angle or time in centiseconds. A full circle or a day of time is 1,296,000 centiseconds.
buffer
Caller-owned character buffer. The call writes the text here.
Returns the text. When you pass buffer, the text is written there and the return points at that buffer.
jme_julian_dayWhat it does Builds a Julian date from a calendar date and a decimal hour.
When to use it Use this to turn a year, month, day, and hour into the jd_ut or jd_et argument of every other call.
Where it fits The first step of almost every calculation. calendar selects Gregorian or Julian.
jme_julian_day(year, month, day, hour, calendar)
year
Calendar year. Astronomical year numbering, so 1 BCE is year 0.
month
Month number from 1 to 12.
day
Day of the month.
hour
Hour. Where the call takes a decimal hour, fractions of an hour are allowed.
calendar
JME_CALENDAR_GREGORIAN or JME_CALENDAR_JULIAN.
Returns the number described above. A non-finite value means the call could not produce that number.
jme_calendar_is_leap_year
What it does Reports whether a year is a leap year in the selected calendar.
When to use it Use this before you accept 29 February.
Where it fits Date entry. It does not convert a Julian date.
jme_calendar_is_leap_year(year, calendar)
year
Calendar year. Astronomical year numbering, so 1 BCE is year 0.
calendar
JME_CALENDAR_GREGORIAN or JME_CALENDAR_JULIAN.
Returns the integer result named above. A status-style return uses JME_OK and JME_ERR.
jme_date_is_validWhat it does Reports whether year, month, and day exist in the selected calendar.
When to use it Use this to reject a date before you call jme_julian_day.
Where it fits Form validation.
jme_date_is_valid(year, month, day, calendar)
year
Calendar year. Astronomical year numbering, so 1 BCE is year 0.
month
Month number from 1 to 12.
day
Day of the month.
calendar
JME_CALENDAR_GREGORIAN or JME_CALENDAR_JULIAN.
Returns the integer result named above. A status-style return uses JME_OK and JME_ERR.
jme_day_of_yearWhat it does Returns the day number within the year, starting at 1.
When to use it Use this for a day-of-year display or a seasonal index.
Where it fits After the date is known to be valid.
jme_day_of_year(year, month, day, calendar)
year
Calendar year. Astronomical year numbering, so 1 BCE is year 0.
month
Month number from 1 to 12.
day
Day of the month.
calendar
JME_CALENDAR_GREGORIAN or JME_CALENDAR_JULIAN.
Returns the integer result named above. A status-style return uses JME_OK and JME_ERR.
jme_day_of_weekWhat it does Returns the weekday of a Julian date.
When to use it Use this for a calendar label. The numbering is the library's weekday index.
Where it fits Any date you already converted.
jme_day_of_week(jd)
jd
Julian date. The description of the call says which time scale that number is.
Returns the integer result named above. A status-style return uses JME_OK and JME_ERR.
jme_reverse_julian_day
What it does Splits a Julian date back into calendar year, month, day, and decimal hour.
When to use it Use this to display a Julian date you computed, such as a rise time.
Where it fits The inverse of jme_julian_day. For UTC fields including minutes and seconds, use jme_jd_to_utc.
jme_reverse_julian_day(jd, calendar, year, month, day, hour)
jd
Julian date. The description of the call says which time scale that number is.
calendar
JME_CALENDAR_GREGORIAN or JME_CALENDAR_JULIAN.
year
Calendar year. Astronomical year numbering, so 1 BCE is year 0.
month
Month number from 1 to 12.
day
Day of the month.
hour
Hour. Where the call takes a decimal hour, fractions of an hour are allowed.
Returns nothing. The call writes its output arguments, or it changes a library setting for later calls.
jme_delta_tWhat it does Returns Delta-T, TT minus UT, in seconds for a Universal Time date, using the active model.
When to use it Use this when you have UT and need TT, or you need to show Delta-T.
Where it fits The model-selecting form is jme_delta_t_ex.
jme_delta_t(jd_ut)
jd_ut
Universal Time as a Julian date. Use this when the clock you have is UT.
Returns the number described above. A non-finite value means the call could not produce that number.
jme_delta_t_exWhat it does Returns Delta-T for an explicit model.
When to use it Use this when the caller chooses the series, including JME_TIME_DELTAT_AUTOMATIC.
Where it fits Models whose source tables are not in the library return a non-finite value and an error.
jme_delta_t_ex(jd_ut, model, error)
jd_ut
Universal Time as a Julian date. Use this when the clock you have is UT.
model
Model id from the JME_MODEL_* or JME_SIDEREAL_* constants, depending on the call.
error
Caller-owned text buffer. On failure the library writes the reason here.
Returns the number described above. A non-finite value means the call could not produce that number.
jme_get_ayanamsaWhat it does Returns the active ayanamsa at Terrestrial Time.
When to use it Use this to subtract from a tropical longitude when you want the sidereal longitude of the current mode.
Where it fits The mode comes from jme_set_sidereal_mode. The UT form is jme_get_ayanamsa_ut.
jme_get_ayanamsa(jd_et)
jd_et
Terrestrial Time (TT) as a Julian date.
Returns the number described above. A non-finite value means the call could not produce that number.
jme_get_ayanamsa_utWhat it does Returns the active ayanamsa at Universal Time.
When to use it Use this when the clock is UT.
Where it fits The UT pair of jme_get_ayanamsa.
jme_get_ayanamsa_ut(jd_ut)
jd_ut
Universal Time as a Julian date. Use this when the clock you have is UT.
Returns the number described above. A non-finite value means the call could not produce that number.
jme_get_ayanamsa_exWhat it does Returns one named ayanamsa at Terrestrial Time, without changing the active mode.
When to use it Use this to compare two ayanamsas, or to label a model you have not selected.
Where it fits model is a JME_SIDEREAL_* id.
jme_get_ayanamsa_ex(jd_et, model, ayan, error)
jd_et
Terrestrial Time (TT) as a Julian date.
model
Model id from the JME_MODEL_* or JME_SIDEREAL_* constants, depending on the call.
ayan
Receives the ayanamsa in degrees.
error
Caller-owned text buffer. On failure the library writes the reason here.
Returns JME_OK (0) or JME_ERR (-1). On JME_ERR, read error. The output arguments are written as the description says.
jme_get_ayanamsa_ex_ut
What it does Returns one named ayanamsa at Universal Time.
When to use it Use this when the clock is UT and the mode is an argument, not the library setting.
Where it fits The UT pair of jme_get_ayanamsa_ex.
jme_get_ayanamsa_ex_ut(jd_ut, model, ayan, error)
jd_ut
Universal Time as a Julian date. Use this when the clock you have is UT.
model
Model id from the JME_MODEL_* or JME_SIDEREAL_* constants, depending on the call.
ayan
Receives the ayanamsa in degrees.
error
Caller-owned text buffer. On failure the library writes the reason here.
Returns JME_OK (0) or JME_ERR (-1). On JME_ERR, read error. The output arguments are written as the description says.
jme_time_equWhat it does Returns the equation of time at Universal Time.
When to use it Use this to move between mean solar time and apparent solar time.
Where it fits jme_lmt_to_lat uses the same quantity. e receives the value.
jme_time_equ(jd_ut, e, error)
jd_ut
Universal Time as a Julian date. Use this when the clock you have is UT.
e
Receives the equation of time.
error
Caller-owned text buffer. On failure the library writes the reason here.
Returns JME_OK (0) or JME_ERR (-1). On JME_ERR, read error. The output arguments are written as the description says.
jme_jd_to_utcWhat it does Splits a Julian date into UTC calendar fields, including minutes and seconds.
When to use it Use this to display a computed instant on a civil clock.
Where it fits calendar selects Gregorian or Julian. For a decimal hour only, jme_reverse_julian_day is enough.
jme_jd_to_utc(jd, calendar, year, month, day, hour, minute, second)
jd
Julian date. The description of the call says which time scale that number is.
calendar
JME_CALENDAR_GREGORIAN or JME_CALENDAR_JULIAN.
year
Calendar year. Astronomical year numbering, so 1 BCE is year 0.
month
Month number from 1 to 12.
day
Day of the month.
hour
Hour. Where the call takes a decimal hour, fractions of an hour are allowed.
minute
Minute.
second
Second, including the fraction. A leap second 60 is accepted only on a UTC path that validates it.
Returns nothing. The call writes its output arguments, or it changes a library setting for later calls.
jme_sidereal_timeWhat it does Returns Greenwich sidereal time in hours for a Universal Time date.
When to use it Use this when you need RAMC's starting point and you do not need a status code.
Where it fits The explicit mean-or-apparent form is jme_sidereal_time_ex.
jme_sidereal_time(jd_ut)
jd_ut
Universal Time as a Julian date. Use this when the clock you have is UT.
Returns the number described above. A non-finite value means the call could not produce that number.
jme_sidereal_time0What it does Returns Greenwich sidereal time from UT, an obliquity, and a nutation you already have.
When to use it Use this when you computed eps and nut yourself and you do not want the call to look them up.
Where it fits A custom precession pipeline.
jme_sidereal_time0(jd_ut, eps, nut)
jd_ut
Universal Time as a Julian date. Use this when the clock you have is UT.
eps
Obliquity of the ecliptic, in degrees, at the date you are using.
nut
Nutation contribution already computed, in the unit this sidereal-time call expects.
Returns the number described above. A non-finite value means the call could not produce that number.
jme_utc_time_zoneWhat it does Shifts a UTC calendar time by a timezone offset in hours.
When to use it Use this to present an instant in local civil time, or to convert a local civil time toward UTC.
Where it fits timezone is hours east of UTC. This is a clock shift, not the equation of time.
jme_utc_time_zone(year, month, day, hour, minute, second, timezone, out_year, out_month, out_day, out_hour, out_minute, out_second)
year
Calendar year. Astronomical year numbering, so 1 BCE is year 0.
month
Month number from 1 to 12.
day
Day of the month.
hour
Hour. Where the call takes a decimal hour, fractions of an hour are allowed.
minute
Minute.
second
Second, including the fraction. A leap second 60 is accepted only on a UTC path that validates it.
timezone
Hours east of UTC. West longitudes use a negative offset.
out_year
Receives the converted year.
out_month
Receives the converted month.
out_day
Receives the converted day.
out_hour
Receives the converted hour.
out_minute
Receives the converted minute.
out_second
Receives the converted second.
Returns nothing. The call writes its output arguments, or it changes a library setting for later calls.
jme_utc_to_jdWhat it does Converts a UTC calendar time to a UTC Julian date.
When to use it Use this when the input is UTC wall time, including a possible leap second, and you need a Julian date.
Where it fits Dates after the leap-second table fail. jme_julian_day does not apply the leap-second table.
jme_utc_to_jd(year, month, day, hour, minute, second, calendar, jd_utc)
year
Calendar year. Astronomical year numbering, so 1 BCE is year 0.
month
Month number from 1 to 12.
day
Day of the month.
hour
Hour. Where the call takes a decimal hour, fractions of an hour are allowed.
minute
Minute.
second
Second, including the fraction. A leap second 60 is accepted only on a UTC path that validates it.
calendar
JME_CALENDAR_GREGORIAN or JME_CALENDAR_JULIAN.
jd_utc
Receives the UTC Julian date.
Returns the integer result named above. A status-style return uses JME_OK and JME_ERR.
Function group
These entered in 1.1.0 and stay in 2.0.0. Use them when you need an explicit time scale, a mean or true ayanamsa, Gauquelin sectors, polar motion, or a checked setter.
jme_time_scale_convert
What it does Converts a split Julian date from one time scale to another.
When to use it Use this when you must move among UT, TAI, TT, TDB, TCG, and TCB yourself.
Where it fits High-level jme_calc_ut already converts UT. UTC on this call follows the leap-second table, which currently stops at 2027-06-30.
jme_time_scale_convert(jd1, jd2, from_scale, to_scale, out1, out2, error)
jd1
First part of a split Julian date.
jd2
Second part of a split Julian date. The instant is jd1 + jd2.
from_scale
Source time scale, one of the JME_TIME_SCALE_* constants.
to_scale
Time scale to convert into, one of the JME_TIME_SCALE_* constants.
out1
Receives the first part of the converted split Julian date.
out2
Receives the second part of the converted split Julian date.
error
Caller-owned text buffer. On failure the library writes the reason here.
Returns JME_OK (0) or JME_ERR (-1). On JME_ERR, read error. The output arguments are written as the description says.
jme_time_scale_nameWhat it does Returns the display name of a time-scale id.
When to use it Use this to label a JME_TIME_SCALE_* value.
Where it fits A time-scale menu.
jme_time_scale_name(scale)
scale
Time-scale id from the JME_TIME_SCALE_* constants.
Returns the text. When you pass buffer, the text is written there and the return points at that buffer.
jme_leap_second_table_info
What it does Reports how far the embedded UTC leap-second table extends.
When to use it Call it before you convert a future UTC date, so you can fail clearly past the table.
Where it fits The covered range currently ends at 2027-06-30 UTC.
jme_leap_second_table_info(jd_utc_valid_until, last_tai_minus_utc, error)
jd_utc_valid_until
Receives the first UTC Julian date the leap-second table does not cover.
last_tai_minus_utc
Receives the latest TAI minus UTC, in seconds.
error
Caller-owned text buffer. On failure the library writes the reason here.
Returns JME_OK (0) or JME_ERR (-1). On JME_ERR, read error. The output arguments are written as the description says.
jme_delta_t_iers_table_info
What it does Reports the first, last observed, and last predicted dates of the embedded IERS Delta-T table.
When to use it Call it when you need to know whether a date is observed, predicted, or outside the IERS file.
Where it fits Automatic Delta-T uses this table where it covers the date.
jme_delta_t_iers_table_info(jd_first, jd_last_observed, jd_last, error)
jd_first
Receives the first Julian date in the table.
jd_last_observed
Receives the last Julian date marked as observed.
jd_last
Receives the last Julian date in the table, including predictions.
error
Caller-owned text buffer. On failure the library writes the reason here.
Returns JME_OK (0) or JME_ERR (-1). On JME_ERR, read error. The output arguments are written as the description says.
jme_sidereal_time_exWhat it does Returns Greenwich sidereal time in hours, mean or apparent, with a status.
When to use it Use this when a failure, such as a bad Delta-T, must be an error rather than a bare number.
Where it fits apparent is zero for mean time and non-zero for apparent time. hours receives the result.
jme_sidereal_time_ex(jd_ut, apparent, hours, error)
jd_ut
Universal Time as a Julian date. Use this when the clock you have is UT.
apparent
Zero asks for mean sidereal time. Non-zero asks for apparent sidereal time.
hours
Receives sidereal time in hours.
error
Caller-owned text buffer. On failure the library writes the reason here.
Returns JME_OK (0) or JME_ERR (-1). On JME_ERR, read error. The output arguments are written as the description says.
jme_get_ayanamsa_ex2What it does Returns a named ayanamsa at Terrestrial Time, and optionally its rate, with mean or true equinox chosen by flags.
When to use it Use this when the chart must say whether the ayanamsa is mean or true.
Where it fits flags is JME_AYANAMSA_MEAN or JME_AYANAMSA_TRUE. rate may be omitted.
jme_get_ayanamsa_ex2(jd_et, model, flags, ayan, rate, error)
jd_et
Terrestrial Time (TT) as a Julian date.
model
Model id from the JME_MODEL_* or JME_SIDEREAL_* constants, depending on the call.
flags
Flag bits for this call. Pass 0 for the default. The constant group for this family lists the bits.
ayan
Receives the ayanamsa in degrees.
rate
Receives the rate of change. You may pass an empty pointer when you do not need it.
error
Caller-owned text buffer. On failure the library writes the reason here.
Returns JME_OK (0) or JME_ERR (-1). On JME_ERR, read error. The output arguments are written as the description says.
jme_get_ayanamsa_ex2_ut
What it does Returns a named mean or true ayanamsa at Universal Time, and optionally its rate.
When to use it Use this when the clock is UT.
Where it fits The UT pair of jme_get_ayanamsa_ex2.
jme_get_ayanamsa_ex2_ut(jd_ut, model, flags, ayan, rate, error)
jd_ut
Universal Time as a Julian date. Use this when the clock you have is UT.
model
Model id from the JME_MODEL_* or JME_SIDEREAL_* constants, depending on the call.
flags
Flag bits for this call. Pass 0 for the default. The constant group for this family lists the bits.
ayan
Receives the ayanamsa in degrees.
rate
Receives the rate of change. You may pass an empty pointer when you do not need it.
error
Caller-owned text buffer. On failure the library writes the reason here.
Returns JME_OK (0) or JME_ERR (-1). On JME_ERR, read error. The output arguments are written as the description says.
jme_houses_gauquelinWhat it does Computes the 36 Gauquelin sector cusps at Universal Time.
When to use it Use this for Gauquelin sectors. Do not pass JME_HOUSE_GAUQUELIN to jme_houses.
Where it fits A sector wheel. cusps needs 37 numbers. Polar latitudes, where a semi-arc is undefined, return JME_ERR.
jme_houses_gauquelin(jd_ut, flags, geo_lat, geo_lon, cusps, ascmc, error)
jd_ut
Universal Time as a Julian date. Use this when the clock you have is UT.
flags
Flag bits for this call. Pass 0 for the default. The constant group for this family lists the bits.
geo_lat
Geographic latitude in degrees. North is positive.
geo_lon
Geographic longitude in degrees. East is positive.
cusps
Caller-owned cusp array. Twelve-cusp calls use 13 numbers (index 1 to 12). Gauquelin calls use 37 numbers.
ascmc
Caller-owned array for the Ascendant, Midheaven, and the other angles this call returns.
error
Caller-owned text buffer. On failure the library writes the reason here.
Returns JME_OK (0) or JME_ERR (-1). On JME_ERR, read error. The output arguments are written as the description says.
jme_houses_gauquelin_armc
What it does Computes the 36 Gauquelin sector cusps from RAMC and obliquity.
When to use it Use this when you already have RAMC.
Where it fits The RAMC pair of jme_houses_gauquelin. Same 37-cusp array.
jme_houses_gauquelin_armc(armc, geo_lat, eps, cusps, ascmc, error)
armc
Right ascension of the Midheaven, in degrees.
geo_lat
Geographic latitude in degrees. North is positive.
eps
Obliquity of the ecliptic, in degrees, at the date you are using.
cusps
Caller-owned cusp array. Twelve-cusp calls use 13 numbers (index 1 to 12). Gauquelin calls use 37 numbers.
ascmc
Caller-owned array for the Ascendant, Midheaven, and the other angles this call returns.
error
Caller-owned text buffer. On failure the library writes the reason here.
Returns JME_OK (0) or JME_ERR (-1). On JME_ERR, read error. The output arguments are written as the description says.
jme_calc_resolve_engine
What it does Reports which engine jme_calc will use for a body at a Terrestrial Time.
When to use it Use this when ENGINE=AUTO must not switch models silently, and you want the choice in advance.
Where it fits engine_id receives JPL, Moshier, or VSOP87 plus ELP. The substituted flag is 1 when a barycentre replaced a planet centre.
jme_calc_resolve_engine(jd_et, body, engine_id, jpl_center_substituted, error)
jd_et
Terrestrial Time (TT) as a Julian date.
body
Body id such as JME_BODY_SUN. The body constants list every id.
engine_id
Receives the engine id: JPL, Moshier, or VSOP87 plus ELP.
jpl_center_substituted
Receives 1 when a missing planet centre was replaced by its system barycentre.
error
Caller-owned text buffer. On failure the library writes the reason here.
Returns JME_OK (0) or JME_ERR (-1). On JME_ERR, read error. The output arguments are written as the description says.
jme_set_jpl_center_policy
What it does Chooses what happens when a JPL planet centre is not in the open kernels.
When to use it Use JME_JPL_CENTER_STRICT, the default, when a missing centre must be an error. Use BARYCENTER only when the system barycentre is an acceptable stand-in.
Where it fits Before jme_calc in JPL or AUTO mode. A bad value leaves the previous policy in place.
jme_set_jpl_center_policy(policy, error)
policy
JME_JPL_CENTER_STRICT or JME_JPL_CENTER_BARYCENTER.
error
Caller-owned text buffer. On failure the library writes the reason here.
Returns JME_OK (0) or JME_ERR (-1). On JME_ERR, read error. The output arguments are written as the description says.
jme_get_jpl_center_policy
What it does Returns the active planet-centre policy.
When to use it Call it before you interpret a JPL position of Mars through Pluto.
Where it fits After jme_set_jpl_center_policy.
jme_get_jpl_center_policy()
Returns the integer result named above. A status-style return uses JME_OK and JME_ERR.
jme_set_astro_models_checked
What it does Sets model tokens and rejects an unknown or over-long token.
When to use it Use this instead of jme_set_astro_models when a bad string must not change anything.
Where it fits Startup from user input. On JME_ERR the previous models stay.
jme_set_astro_models_checked(models, error)
models
Text tokens such as ENGINE=JPL or ENGINE=MOSHIER. The engine section lists the tokens.
error
Caller-owned text buffer. On failure the library writes the reason here.
Returns JME_OK (0) or JME_ERR (-1). On JME_ERR, read error. The output arguments are written as the description says.
jme_set_topo_checkedWhat it does Stores the observer and rejects a non-finite value or a latitude outside -90 to 90.
When to use it Use this when the place comes from a form.
Where it fits On JME_ERR the previous observer stays. Longitude is wrapped.
jme_set_topo_checked(lon, lat, altitude, error)
lon
Longitude in degrees. East is positive when this is a place. For an angle helper it is the ecliptic or equatorial longitude the call names.
lat
Latitude in degrees. North is positive when this is a place.
altitude
Height. For an observer this is metres. For refraction this is the altitude angle in degrees.
error
Caller-owned text buffer. On failure the library writes the reason here.
Returns JME_OK (0) or JME_ERR (-1). On JME_ERR, read error. The output arguments are written as the description says.
jme_set_sidereal_mode_checked
What it does Selects an ayanamsa and rejects an unknown mode or a non-finite epoch.
When to use it Use this when the mode comes from a form.
Where it fits On JME_ERR the previous mode stays.
jme_set_sidereal_mode_checked(sidereal_mode, t0, ayan_t0, error)
sidereal_mode
Ayanamsa id from the JME_SIDEREAL_* constants.
t0
Reference epoch for a user ayanamsa, as a Julian date.
ayan_t0
Ayanamsa at t0, in degrees, for the user mode.
error
Caller-owned text buffer. On failure the library writes the reason here.
Returns JME_OK (0) or JME_ERR (-1). On JME_ERR, read error. The output arguments are written as the description says.
jme_eop_load_fileWhat it does Loads an Earth-orientation file of polar motion.
When to use it Call it before you ask for topocentric places that should include polar motion.
Where it fits The file supplies x and y. jme_set_polar_motion turns the correction on.
jme_eop_load_file(path, error)
path
Filesystem path. For a kernel this is the .bsp file or the directory that holds it.
error
Caller-owned text buffer. On failure the library writes the reason here.
Returns JME_OK (0) or JME_ERR (-1). On JME_ERR, read error. The output arguments are written as the description says.
jme_eop_clearWhat it does Drops the loaded Earth-orientation table.
When to use it Call it when a later calculation must not use the file you loaded.
Where it fits After a chart that needed polar motion, if the next chart must not inherit it.
jme_eop_clear()
Returns nothing. The call writes its output arguments, or it changes a library setting for later calls.
jme_eop_coverageWhat it does Reports the first and last modified Julian dates in the loaded Earth-orientation table.
When to use it Call it before you evaluate a date, so you know the date is inside the file.
Where it fits After jme_eop_load_file.
jme_eop_coverage(mjd_first, mjd_last, error)
mjd_first
Receives the first modified Julian date in the Earth-orientation file.
mjd_last
Receives the last modified Julian date in the Earth-orientation file.
error
Caller-owned text buffer. On failure the library writes the reason here.
Returns JME_OK (0) or JME_ERR (-1). On JME_ERR, read error. The output arguments are written as the description says.
jme_eop_polar_motionWhat it does Interpolates polar motion x and y at a modified Julian date.
When to use it Use this to read the angles yourself, or to check a date before enabling the correction.
Where it fits predicted is non-zero when a prediction row was used.
jme_eop_polar_motion(mjd, xp_arcsec, yp_arcsec, predicted, error)
mjd
Modified Julian date of the Earth-orientation row you want.
xp_arcsec
Receives polar motion x, in arcseconds.
yp_arcsec
Receives polar motion y, in arcseconds.
predicted
Receives non-zero when a predicted row was used.
error
Caller-owned text buffer. On failure the library writes the reason here.
Returns JME_OK (0) or JME_ERR (-1). On JME_ERR, read error. The output arguments are written as the description says.
jme_set_polar_motionWhat it does Turns polar motion on or off for later topocentric work.
When to use it Turn it on only after a file is loaded and the date is inside that file.
Where it fits It affects observer position, horizontal coordinates, and eclipse geography.
jme_set_polar_motion(enabled)
enabled
Non-zero applies polar motion. Zero leaves the observer on the ellipsoid without it.
Returns nothing. The call writes its output arguments, or it changes a library setting for later calls.
jme_get_polar_motionWhat it does Returns whether polar motion is currently applied.
When to use it Call it before you interpret a topocentric altitude.
Where it fits After jme_set_polar_motion.
jme_get_polar_motion()
Returns the integer result named above. A status-style return uses JME_OK and JME_ERR.
Function group
Read this before you compare a result with a build from before 1.1.0. The items are changes in existing models, not new function names.
Reference
Public
JME_*
constants from the C headers. The same names are exported by PHP, Python, and Dart.
JME_JME_H
and
JME_EXTENDED_H
are header include guards, not calculation constants. The bindings still export those two guards. The Use column says what the constant means and which call
receives it.
This box filters the constant list. The sidebar search looks through the whole page and highlights each match.
Constant group
Coordinate ids and other values that did not fall in a narrower group. Pass a coordinate id only to the call that documents it, such as refraction.
| Constant | Value | Use |
|---|---|---|
JME_COORD_APPARENT_TO_TRUE |
289 |
Refraction direction. Pass this as calc_flag to jme_refract or jme_refract_extended to remove refraction and turn an apparent altitude into a true altitude. |
JME_COORD_ECLIPTIC_TO_HORIZONTAL |
290 |
Name of the ecliptic-to-horizon conversion. The functions that perform the pieces are jme_ecliptic_to_equatorial and jme_equatorial_to_horizontal. |
JME_COORD_EQUATORIAL_TO_HORIZONTAL |
291 |
Name of the equator-to-horizon conversion. The call is jme_equatorial_to_horizontal. |
JME_COORD_HORIZONTAL_TO_ECLIPTIC |
292 |
Name of the horizon-to-ecliptic conversion. Go through jme_horizontal_to_equatorial and then jme_equatorial_to_ecliptic. |
JME_COORD_HORIZONTAL_TO_EQUATORIAL |
293 |
Name of the horizon-to-equator conversion. The call is jme_horizontal_to_equatorial. |
JME_COORD_TRUE_TO_APPARENT |
294 |
Refraction direction. Pass this as calc_flag to add refraction and turn a true altitude into an apparent altitude. |
Constant group
Pass a rounding id to jme_split_degree when you print a degree angle. ROUND_DEG, ROUND_MIN, and ROUND_SEC are the values that call applies.
| Constant | Value | Use |
|---|---|---|
JME_ANGLE_FORMAT_KEEP_DEG |
0 |
Angle-format id for keeping the degree field. jme_split_degree itself applies only the ROUND_DEG, ROUND_MIN, and ROUND_SEC ids. |
JME_ANGLE_FORMAT_KEEP_SIGN |
1 |
Angle-format id for keeping the sign. jme_split_degree returns the sign separately in isgn. |
JME_ANGLE_FORMAT_NAKSHATRA |
2 |
Angle-format id naming a nakshatra-style display. It is not a nakshatra calculation. Longitude boundaries still come from jme_mooncross_ut. |
JME_ANGLE_FORMAT_ROUND_DEG |
3 |
Round a split angle to the nearest degree. Pass this as roundflag to jme_split_degree. |
JME_ANGLE_FORMAT_ROUND_MIN |
4 |
Round a split angle to the nearest arcminute. Pass this as roundflag to jme_split_degree. |
JME_ANGLE_FORMAT_ROUND_SEC |
5 |
Round a split angle to the nearest arcsecond. Pass this as roundflag to jme_split_degree. |
JME_ANGLE_FORMAT_ZODIACAL |
6 |
Angle-format id for a sign-and-degree display. It does not compute a sign. Normalise the longitude first, then split it. |
Constant group
Pass one of these as the body argument. The Sun through Pluto, the Earth, the nodes, and the system barycentres are the usual analytical targets. A numbered asteroid or a small body needs a JPL kernel that contains it.
| Constant | Value | Use |
|---|---|---|
JME_BODY_SUN |
0 |
Body id for the Sun. Calculation support depends on the selected engine and, for JPL, the loaded kernel. Unsupported targets return JME_ERR. |
JME_BODY_MOON |
1 |
Body id for the Moon. Calculation support depends on the selected engine and, for JPL, the loaded kernel. Unsupported targets return JME_ERR. |
JME_BODY_MERCURY |
2 |
Body id for Mercury. Calculation support depends on the selected engine and, for JPL, the loaded kernel. Unsupported targets return JME_ERR. |
JME_BODY_VENUS |
3 |
Body id for Venus. Calculation support depends on the selected engine and, for JPL, the loaded kernel. Unsupported targets return JME_ERR. |
JME_BODY_MARS |
4 |
Body id for Mars. Calculation support depends on the selected engine and, for JPL, the loaded kernel. Unsupported targets return JME_ERR. |
JME_BODY_JUPITER |
5 |
Body id for Jupiter. Calculation support depends on the selected engine and, for JPL, the loaded kernel. Unsupported targets return JME_ERR. |
JME_BODY_SATURN |
6 |
Body id for Saturn. Calculation support depends on the selected engine and, for JPL, the loaded kernel. Unsupported targets return JME_ERR. |
JME_BODY_URANUS |
7 |
Body id for Uranus. Calculation support depends on the selected engine and, for JPL, the loaded kernel. Unsupported targets return JME_ERR. |
JME_BODY_NEPTUNE |
8 |
Body id for Neptune. Calculation support depends on the selected engine and, for JPL, the loaded kernel. Unsupported targets return JME_ERR. |
JME_BODY_PLUTO |
9 |
Body id for Pluto. Calculation support depends on the selected engine and, for JPL, the loaded kernel. Unsupported targets return JME_ERR. |
JME_BODY_EARTH |
10 |
Body id for the Earth. Calculation support depends on the selected engine and, for JPL, the loaded kernel. Unsupported targets return JME_ERR. |
JME_BODY_SOLAR_SYSTEM_BARYCENTER |
11 |
Body id for the solar-system barycentre. Calculation support depends on the selected engine and, for JPL, the loaded kernel. Unsupported targets return JME_ERR. |
JME_BODY_MERCURY_BARYCENTER |
12 |
Barycentre of the Mercury system. Use this centre when the kernel has the system barycentre and you did not load the satellite kernel that holds the planet centre. |
JME_BODY_VENUS_BARYCENTER |
13 |
Barycentre of the Venus system. Use this centre when the kernel has the system barycentre and you did not load the satellite kernel that holds the planet centre. |
JME_BODY_EARTH_MOON_BARYCENTER |
14 |
Body id for the Earth-Moon barycentre. Calculation support depends on the selected engine and, for JPL, the loaded kernel. Unsupported targets return JME_ERR. |
JME_BODY_MARS_BARYCENTER |
15 |
Barycentre of the Mars system. Use this centre when the kernel has the system barycentre and you did not load the satellite kernel that holds the planet centre. |
JME_BODY_JUPITER_BARYCENTER |
16 |
Barycentre of the Jupiter system. Use this centre when the kernel has the system barycentre and you did not load the satellite kernel that holds the planet centre. |
JME_BODY_SATURN_BARYCENTER |
17 |
Barycentre of the Saturn system. Use this centre when the kernel has the system barycentre and you did not load the satellite kernel that holds the planet centre. |
JME_BODY_URANUS_BARYCENTER |
18 |
Barycentre of the Uranus system. Use this centre when the kernel has the system barycentre and you did not load the satellite kernel that holds the planet centre. |
JME_BODY_NEPTUNE_BARYCENTER |
19 |
Barycentre of the Neptune system. Use this centre when the kernel has the system barycentre and you did not load the satellite kernel that holds the planet centre. |
JME_BODY_PLUTO_BARYCENTER |
20 |
Barycentre of the Pluto system. Use this centre when the kernel has the system barycentre and you did not load the satellite kernel that holds the planet centre. |
JME_BODY_MEAN_NODE |
21 |
Body id for the mean lunar node. Calculation support depends on the selected engine and, for JPL, the loaded kernel. Unsupported targets return JME_ERR. |
JME_BODY_TRUE_NODE |
22 |
Body id for the true lunar node. Calculation support depends on the selected engine and, for JPL, the loaded kernel. Unsupported targets return JME_ERR. |
JME_BODY_ALTJIRA |
-1000 |
Body id for Altjira. Calculation support depends on the selected engine and, for JPL, the loaded kernel. Unsupported targets return JME_ERR. |
JME_BODY_AMYCUS |
-1001 |
Body id for Amycus. Calculation support depends on the selected engine and, for JPL, the loaded kernel. Unsupported targets return JME_ERR. |
JME_BODY_ARROKOTH |
-1002 |
Body id for Arrokoth. Calculation support depends on the selected engine and, for JPL, the loaded kernel. Unsupported targets return JME_ERR. |
JME_BODY_ASBOLUS |
-1003 |
Body id for Asbolus. Calculation support depends on the selected engine and, for JPL, the loaded kernel. Unsupported targets return JME_ERR. |
JME_BODY_ASTEROID_001 |
-1004 |
Asteroid slot 1. No engine currently maps this slot; jme_calc returns JME_ERR. |
JME_BODY_ASTEROID_002 |
-1005 |
Asteroid slot 2. No engine currently maps this slot; jme_calc returns JME_ERR. |
JME_BODY_ASTEROID_003 |
-1006 |
Asteroid slot 3. No engine currently maps this slot; jme_calc returns JME_ERR. |
JME_BODY_ASTEROID_004 |
-1007 |
Asteroid slot 4. No engine currently maps this slot; jme_calc returns JME_ERR. |
JME_BODY_ASTEROID_005 |
-1008 |
Asteroid slot 5. No engine currently maps this slot; jme_calc returns JME_ERR. |
JME_BODY_ASTEROID_006 |
-1009 |
Asteroid slot 6. No engine currently maps this slot; jme_calc returns JME_ERR. |
JME_BODY_ASTEROID_007 |
-1010 |
Asteroid slot 7. No engine currently maps this slot; jme_calc returns JME_ERR. |
JME_BODY_ASTEROID_008 |
-1011 |
Asteroid slot 8. No engine currently maps this slot; jme_calc returns JME_ERR. |
JME_BODY_ASTEROID_009 |
-1012 |
Asteroid slot 9. No engine currently maps this slot; jme_calc returns JME_ERR. |
JME_BODY_ASTEROID_010 |
-1013 |
Asteroid slot 10. No engine currently maps this slot; jme_calc returns JME_ERR. |
JME_BODY_ASTEROID_011 |
-1014 |
Asteroid slot 11. No engine currently maps this slot; jme_calc returns JME_ERR. |
JME_BODY_ASTEROID_012 |
-1015 |
Asteroid slot 12. No engine currently maps this slot; jme_calc returns JME_ERR. |
JME_BODY_ASTEROID_013 |
-1016 |
Asteroid slot 13. No engine currently maps this slot; jme_calc returns JME_ERR. |
JME_BODY_ASTEROID_014 |
-1017 |
Asteroid slot 14. No engine currently maps this slot; jme_calc returns JME_ERR. |
JME_BODY_ASTEROID_015 |
-1018 |
Asteroid slot 15. No engine currently maps this slot; jme_calc returns JME_ERR. |
JME_BODY_ASTEROID_016 |
-1019 |
Asteroid slot 16. No engine currently maps this slot; jme_calc returns JME_ERR. |
JME_BODY_ASTEROID_017 |
-1020 |
Asteroid slot 17. No engine currently maps this slot; jme_calc returns JME_ERR. |
JME_BODY_ASTEROID_018 |
-1021 |
Asteroid slot 18. No engine currently maps this slot; jme_calc returns JME_ERR. |
JME_BODY_ASTEROID_019 |
-1022 |
Asteroid slot 19. No engine currently maps this slot; jme_calc returns JME_ERR. |
JME_BODY_ASTEROID_020 |
-1023 |
Asteroid slot 20. No engine currently maps this slot; jme_calc returns JME_ERR. |
JME_BODY_ASTEROID_021 |
-1024 |
Asteroid slot 21. No engine currently maps this slot; jme_calc returns JME_ERR. |
JME_BODY_ASTEROID_022 |
-1025 |
Asteroid slot 22. No engine currently maps this slot; jme_calc returns JME_ERR. |
JME_BODY_ASTEROID_023 |
-1026 |
Asteroid slot 23. No engine currently maps this slot; jme_calc returns JME_ERR. |
JME_BODY_ASTEROID_024 |
-1027 |
Asteroid slot 24. No engine currently maps this slot; jme_calc returns JME_ERR. |
JME_BODY_ASTEROID_025 |
-1028 |
Asteroid slot 25. No engine currently maps this slot; jme_calc returns JME_ERR. |
JME_BODY_ASTEROID_026 |
-1029 |
Asteroid slot 26. No engine currently maps this slot; jme_calc returns JME_ERR. |
JME_BODY_ASTEROID_027 |
-1030 |
Asteroid slot 27. No engine currently maps this slot; jme_calc returns JME_ERR. |
JME_BODY_ASTEROID_028 |
-1031 |
Asteroid slot 28. No engine currently maps this slot; jme_calc returns JME_ERR. |
JME_BODY_ASTEROID_029 |
-1032 |
Asteroid slot 29. No engine currently maps this slot; jme_calc returns JME_ERR. |
JME_BODY_ASTEROID_030 |
-1033 |
Asteroid slot 30. No engine currently maps this slot; jme_calc returns JME_ERR. |
JME_BODY_ASTEROID_031 |
-1034 |
Asteroid slot 31. No engine currently maps this slot; jme_calc returns JME_ERR. |
JME_BODY_ASTEROID_032 |
-1035 |
Asteroid slot 32. No engine currently maps this slot; jme_calc returns JME_ERR. |
JME_BODY_ASTEROID_033 |
-1036 |
Asteroid slot 33. No engine currently maps this slot; jme_calc returns JME_ERR. |
JME_BODY_ASTEROID_034 |
-1037 |
Asteroid slot 34. No engine currently maps this slot; jme_calc returns JME_ERR. |
JME_BODY_ASTEROID_035 |
-1038 |
Asteroid slot 35. No engine currently maps this slot; jme_calc returns JME_ERR. |
JME_BODY_ASTEROID_036 |
-1039 |
Asteroid slot 36. No engine currently maps this slot; jme_calc returns JME_ERR. |
JME_BODY_ASTEROID_037 |
-1040 |
Asteroid slot 37. No engine currently maps this slot; jme_calc returns JME_ERR. |
JME_BODY_ASTEROID_038 |
-1041 |
Asteroid slot 38. No engine currently maps this slot; jme_calc returns JME_ERR. |
JME_BODY_ASTEROID_039 |
-1042 |
Asteroid slot 39. No engine currently maps this slot; jme_calc returns JME_ERR. |
JME_BODY_ASTEROID_040 |
-1043 |
Asteroid slot 40. No engine currently maps this slot; jme_calc returns JME_ERR. |
JME_BODY_ASTEROID_041 |
-1044 |
Asteroid slot 41. No engine currently maps this slot; jme_calc returns JME_ERR. |
JME_BODY_ASTEROID_042 |
-1045 |
Asteroid slot 42. No engine currently maps this slot; jme_calc returns JME_ERR. |
JME_BODY_ASTEROID_043 |
-1046 |
Asteroid slot 43. No engine currently maps this slot; jme_calc returns JME_ERR. |
JME_BODY_ASTEROID_044 |
-1047 |
Asteroid slot 44. No engine currently maps this slot; jme_calc returns JME_ERR. |
JME_BODY_ASTEROID_045 |
-1048 |
Asteroid slot 45. No engine currently maps this slot; jme_calc returns JME_ERR. |
JME_BODY_ASTEROID_046 |
-1049 |
Asteroid slot 46. No engine currently maps this slot; jme_calc returns JME_ERR. |
JME_BODY_ASTEROID_047 |
-1050 |
Asteroid slot 47. No engine currently maps this slot; jme_calc returns JME_ERR. |
JME_BODY_ASTEROID_048 |
-1051 |
Asteroid slot 48. No engine currently maps this slot; jme_calc returns JME_ERR. |
JME_BODY_ASTEROID_049 |
-1052 |
Asteroid slot 49. No engine currently maps this slot; jme_calc returns JME_ERR. |
JME_BODY_ASTEROID_050 |
-1053 |
Asteroid slot 50. No engine currently maps this slot; jme_calc returns JME_ERR. |
JME_BODY_ASTEROID_051 |
-1054 |
Asteroid slot 51. No engine currently maps this slot; jme_calc returns JME_ERR. |
JME_BODY_ASTEROID_052 |
-1055 |
Asteroid slot 52. No engine currently maps this slot; jme_calc returns JME_ERR. |
JME_BODY_ASTEROID_053 |
-1056 |
Asteroid slot 53. No engine currently maps this slot; jme_calc returns JME_ERR. |
JME_BODY_ASTEROID_054 |
-1057 |
Asteroid slot 54. No engine currently maps this slot; jme_calc returns JME_ERR. |
JME_BODY_ASTEROID_055 |
-1058 |
Asteroid slot 55. No engine currently maps this slot; jme_calc returns JME_ERR. |
JME_BODY_ASTEROID_056 |
-1059 |
Asteroid slot 56. No engine currently maps this slot; jme_calc returns JME_ERR. |
JME_BODY_ASTEROID_057 |
-1060 |
Asteroid slot 57. No engine currently maps this slot; jme_calc returns JME_ERR. |
JME_BODY_ASTEROID_058 |
-1061 |
Asteroid slot 58. No engine currently maps this slot; jme_calc returns JME_ERR. |
JME_BODY_ASTEROID_059 |
-1062 |
Asteroid slot 59. No engine currently maps this slot; jme_calc returns JME_ERR. |
JME_BODY_ASTEROID_060 |
-1063 |
Asteroid slot 60. No engine currently maps this slot; jme_calc returns JME_ERR. |
JME_BODY_ASTEROID_061 |
-1064 |
Asteroid slot 61. No engine currently maps this slot; jme_calc returns JME_ERR. |
JME_BODY_ASTEROID_062 |
-1065 |
Asteroid slot 62. No engine currently maps this slot; jme_calc returns JME_ERR. |
JME_BODY_ASTEROID_063 |
-1066 |
Asteroid slot 63. No engine currently maps this slot; jme_calc returns JME_ERR. |
JME_BODY_ASTEROID_064 |
-1067 |
Asteroid slot 64. No engine currently maps this slot; jme_calc returns JME_ERR. |
JME_BODY_ASTEROID_065 |
-1068 |
Asteroid slot 65. No engine currently maps this slot; jme_calc returns JME_ERR. |
JME_BODY_ASTEROID_066 |
-1069 |
Asteroid slot 66. No engine currently maps this slot; jme_calc returns JME_ERR. |
JME_BODY_ASTEROID_067 |
-1070 |
Asteroid slot 67. No engine currently maps this slot; jme_calc returns JME_ERR. |
JME_BODY_ASTEROID_068 |
-1071 |
Asteroid slot 68. No engine currently maps this slot; jme_calc returns JME_ERR. |
JME_BODY_ASTEROID_069 |
-1072 |
Asteroid slot 69. No engine currently maps this slot; jme_calc returns JME_ERR. |
JME_BODY_ASTEROID_070 |
-1073 |
Asteroid slot 70. No engine currently maps this slot; jme_calc returns JME_ERR. |
JME_BODY_ASTEROID_071 |
-1074 |
Asteroid slot 71. No engine currently maps this slot; jme_calc returns JME_ERR. |
JME_BODY_ASTEROID_072 |
-1075 |
Asteroid slot 72. No engine currently maps this slot; jme_calc returns JME_ERR. |
JME_BODY_ASTEROID_073 |
-1076 |
Asteroid slot 73. No engine currently maps this slot; jme_calc returns JME_ERR. |
JME_BODY_ASTEROID_074 |
-1077 |
Asteroid slot 74. No engine currently maps this slot; jme_calc returns JME_ERR. |
JME_BODY_ASTEROID_075 |
-1078 |
Asteroid slot 75. No engine currently maps this slot; jme_calc returns JME_ERR. |
JME_BODY_ASTEROID_076 |
-1079 |
Asteroid slot 76. No engine currently maps this slot; jme_calc returns JME_ERR. |
JME_BODY_ASTEROID_077 |
-1080 |
Asteroid slot 77. No engine currently maps this slot; jme_calc returns JME_ERR. |
JME_BODY_ASTEROID_078 |
-1081 |
Asteroid slot 78. No engine currently maps this slot; jme_calc returns JME_ERR. |
JME_BODY_ASTEROID_079 |
-1082 |
Asteroid slot 79. No engine currently maps this slot; jme_calc returns JME_ERR. |
JME_BODY_ASTEROID_080 |
-1083 |
Asteroid slot 80. No engine currently maps this slot; jme_calc returns JME_ERR. |
JME_BODY_ASTEROID_081 |
-1084 |
Asteroid slot 81. No engine currently maps this slot; jme_calc returns JME_ERR. |
JME_BODY_ASTEROID_082 |
-1085 |
Asteroid slot 82. No engine currently maps this slot; jme_calc returns JME_ERR. |
JME_BODY_ASTEROID_083 |
-1086 |
Asteroid slot 83. No engine currently maps this slot; jme_calc returns JME_ERR. |
JME_BODY_ASTEROID_084 |
-1087 |
Asteroid slot 84. No engine currently maps this slot; jme_calc returns JME_ERR. |
JME_BODY_ASTEROID_085 |
-1088 |
Asteroid slot 85. No engine currently maps this slot; jme_calc returns JME_ERR. |
JME_BODY_ASTEROID_086 |
-1089 |
Asteroid slot 86. No engine currently maps this slot; jme_calc returns JME_ERR. |
JME_BODY_ASTEROID_087 |
-1090 |
Asteroid slot 87. No engine currently maps this slot; jme_calc returns JME_ERR. |
JME_BODY_ASTEROID_088 |
-1091 |
Asteroid slot 88. No engine currently maps this slot; jme_calc returns JME_ERR. |
JME_BODY_ASTEROID_089 |
-1092 |
Asteroid slot 89. No engine currently maps this slot; jme_calc returns JME_ERR. |
JME_BODY_ASTEROID_090 |
-1093 |
Asteroid slot 90. No engine currently maps this slot; jme_calc returns JME_ERR. |
JME_BODY_ASTEROID_091 |
-1094 |
Asteroid slot 91. No engine currently maps this slot; jme_calc returns JME_ERR. |
JME_BODY_ASTEROID_092 |
-1095 |
Asteroid slot 92. No engine currently maps this slot; jme_calc returns JME_ERR. |
JME_BODY_ASTEROID_093 |
-1096 |
Asteroid slot 93. No engine currently maps this slot; jme_calc returns JME_ERR. |
JME_BODY_ASTEROID_094 |
-1097 |
Asteroid slot 94. No engine currently maps this slot; jme_calc returns JME_ERR. |
JME_BODY_ASTEROID_095 |
-1098 |
Asteroid slot 95. No engine currently maps this slot; jme_calc returns JME_ERR. |
JME_BODY_ASTEROID_096 |
-1099 |
Asteroid slot 96. No engine currently maps this slot; jme_calc returns JME_ERR. |
JME_BODY_ASTEROID_097 |
-1100 |
Asteroid slot 97. No engine currently maps this slot; jme_calc returns JME_ERR. |
JME_BODY_ASTEROID_098 |
-1101 |
Asteroid slot 98. No engine currently maps this slot; jme_calc returns JME_ERR. |
JME_BODY_ASTEROID_099 |
-1102 |
Asteroid slot 99. No engine currently maps this slot; jme_calc returns JME_ERR. |
JME_BODY_ASTEROID_100 |
-1103 |
Asteroid slot 100. No engine currently maps this slot; jme_calc returns JME_ERR. |
JME_BODY_ASTEROID_101 |
-1104 |
Asteroid slot 101. No engine currently maps this slot; jme_calc returns JME_ERR. |
JME_BODY_ASTEROID_102 |
-1105 |
Asteroid slot 102. No engine currently maps this slot; jme_calc returns JME_ERR. |
JME_BODY_ASTEROID_103 |
-1106 |
Asteroid slot 103. No engine currently maps this slot; jme_calc returns JME_ERR. |
JME_BODY_ASTEROID_104 |
-1107 |
Asteroid slot 104. No engine currently maps this slot; jme_calc returns JME_ERR. |
JME_BODY_ASTEROID_105 |
-1108 |
Asteroid slot 105. No engine currently maps this slot; jme_calc returns JME_ERR. |
JME_BODY_ASTEROID_106 |
-1109 |
Asteroid slot 106. No engine currently maps this slot; jme_calc returns JME_ERR. |
JME_BODY_ASTEROID_107 |
-1110 |
Asteroid slot 107. No engine currently maps this slot; jme_calc returns JME_ERR. |
JME_BODY_ASTEROID_108 |
-1111 |
Asteroid slot 108. No engine currently maps this slot; jme_calc returns JME_ERR. |
JME_BODY_ASTEROID_109 |
-1112 |
Asteroid slot 109. No engine currently maps this slot; jme_calc returns JME_ERR. |
JME_BODY_ASTEROID_110 |
-1113 |
Asteroid slot 110. No engine currently maps this slot; jme_calc returns JME_ERR. |
JME_BODY_BIENOR |
-1114 |
Body id for Bienor. Calculation support depends on the selected engine and, for JPL, the loaded kernel. Unsupported targets return JME_ERR. |
JME_BODY_BORASISI |
-1115 |
Body id for Borasisi. Calculation support depends on the selected engine and, for JPL, the loaded kernel. Unsupported targets return JME_ERR. |
JME_BODY_CERES |
-1116 |
Body id for Ceres. Calculation support depends on the selected engine and, for JPL, the loaded kernel. Unsupported targets return JME_ERR. |
JME_BODY_CHARIKLO |
-1117 |
Body id for Chariklo. Calculation support depends on the selected engine and, for JPL, the loaded kernel. Unsupported targets return JME_ERR. |
JME_BODY_CHIRON |
-1118 |
Body id for Chiron. Calculation support depends on the selected engine and, for JPL, the loaded kernel. Unsupported targets return JME_ERR. |
JME_BODY_COMET_001 |
-1119 |
Body id for Comet 001. Calculation support depends on the selected engine and, for JPL, the loaded kernel. Unsupported targets return JME_ERR. |
JME_BODY_COMET_002 |
-1120 |
Body id for Comet 002. Calculation support depends on the selected engine and, for JPL, the loaded kernel. Unsupported targets return JME_ERR. |
JME_BODY_COMET_003 |
-1121 |
Body id for Comet 003. Calculation support depends on the selected engine and, for JPL, the loaded kernel. Unsupported targets return JME_ERR. |
JME_BODY_COMET_004 |
-1122 |
Body id for Comet 004. Calculation support depends on the selected engine and, for JPL, the loaded kernel. Unsupported targets return JME_ERR. |
JME_BODY_COMET_005 |
-1123 |
Body id for Comet 005. Calculation support depends on the selected engine and, for JPL, the loaded kernel. Unsupported targets return JME_ERR. |
JME_BODY_COMET_006 |
-1124 |
Body id for Comet 006. Calculation support depends on the selected engine and, for JPL, the loaded kernel. Unsupported targets return JME_ERR. |
JME_BODY_COMET_007 |
-1125 |
Body id for Comet 007. Calculation support depends on the selected engine and, for JPL, the loaded kernel. Unsupported targets return JME_ERR. |
JME_BODY_COMET_008 |
-1126 |
Body id for Comet 008. Calculation support depends on the selected engine and, for JPL, the loaded kernel. Unsupported targets return JME_ERR. |
JME_BODY_COMET_009 |
-1127 |
Body id for Comet 009. Calculation support depends on the selected engine and, for JPL, the loaded kernel. Unsupported targets return JME_ERR. |
JME_BODY_COMET_010 |
-1128 |
Body id for Comet 010. Calculation support depends on the selected engine and, for JPL, the loaded kernel. Unsupported targets return JME_ERR. |
JME_BODY_COMET_011 |
-1129 |
Body id for Comet 011. Calculation support depends on the selected engine and, for JPL, the loaded kernel. Unsupported targets return JME_ERR. |
JME_BODY_COMET_012 |
-1130 |
Body id for Comet 012. Calculation support depends on the selected engine and, for JPL, the loaded kernel. Unsupported targets return JME_ERR. |
JME_BODY_COMET_013 |
-1131 |
Body id for Comet 013. Calculation support depends on the selected engine and, for JPL, the loaded kernel. Unsupported targets return JME_ERR. |
JME_BODY_COMET_014 |
-1132 |
Body id for Comet 014. Calculation support depends on the selected engine and, for JPL, the loaded kernel. Unsupported targets return JME_ERR. |
JME_BODY_COMET_015 |
-1133 |
Body id for Comet 015. Calculation support depends on the selected engine and, for JPL, the loaded kernel. Unsupported targets return JME_ERR. |
JME_BODY_COMET_016 |
-1134 |
Body id for Comet 016. Calculation support depends on the selected engine and, for JPL, the loaded kernel. Unsupported targets return JME_ERR. |
JME_BODY_COMET_017 |
-1135 |
Body id for Comet 017. Calculation support depends on the selected engine and, for JPL, the loaded kernel. Unsupported targets return JME_ERR. |
JME_BODY_COMET_018 |
-1136 |
Body id for Comet 018. Calculation support depends on the selected engine and, for JPL, the loaded kernel. Unsupported targets return JME_ERR. |
JME_BODY_COMET_019 |
-1137 |
Body id for Comet 019. Calculation support depends on the selected engine and, for JPL, the loaded kernel. Unsupported targets return JME_ERR. |
JME_BODY_COMET_020 |
-1138 |
Body id for Comet 020. Calculation support depends on the selected engine and, for JPL, the loaded kernel. Unsupported targets return JME_ERR. |
JME_BODY_COMET_021 |
-1139 |
Body id for Comet 021. Calculation support depends on the selected engine and, for JPL, the loaded kernel. Unsupported targets return JME_ERR. |
JME_BODY_COMET_022 |
-1140 |
Body id for Comet 022. Calculation support depends on the selected engine and, for JPL, the loaded kernel. Unsupported targets return JME_ERR. |
JME_BODY_COMET_023 |
-1141 |
Body id for Comet 023. Calculation support depends on the selected engine and, for JPL, the loaded kernel. Unsupported targets return JME_ERR. |
JME_BODY_COMET_024 |
-1142 |
Body id for Comet 024. Calculation support depends on the selected engine and, for JPL, the loaded kernel. Unsupported targets return JME_ERR. |
JME_BODY_COMET_025 |
-1143 |
Body id for Comet 025. Calculation support depends on the selected engine and, for JPL, the loaded kernel. Unsupported targets return JME_ERR. |
JME_BODY_COMET_026 |
-1144 |
Body id for Comet 026. Calculation support depends on the selected engine and, for JPL, the loaded kernel. Unsupported targets return JME_ERR. |
JME_BODY_COMET_027 |
-1145 |
Body id for Comet 027. Calculation support depends on the selected engine and, for JPL, the loaded kernel. Unsupported targets return JME_ERR. |
JME_BODY_COMET_028 |
-1146 |
Body id for Comet 028. Calculation support depends on the selected engine and, for JPL, the loaded kernel. Unsupported targets return JME_ERR. |
JME_BODY_COMET_029 |
-1147 |
Body id for Comet 029. Calculation support depends on the selected engine and, for JPL, the loaded kernel. Unsupported targets return JME_ERR. |
JME_BODY_COMET_030 |
-1148 |
Body id for Comet 030. Calculation support depends on the selected engine and, for JPL, the loaded kernel. Unsupported targets return JME_ERR. |
JME_BODY_COMET_031 |
-1149 |
Body id for Comet 031. Calculation support depends on the selected engine and, for JPL, the loaded kernel. Unsupported targets return JME_ERR. |
JME_BODY_COMET_032 |
-1150 |
Body id for Comet 032. Calculation support depends on the selected engine and, for JPL, the loaded kernel. Unsupported targets return JME_ERR. |
JME_BODY_COMET_033 |
-1151 |
Body id for Comet 033. Calculation support depends on the selected engine and, for JPL, the loaded kernel. Unsupported targets return JME_ERR. |
JME_BODY_COMET_034 |
-1152 |
Body id for Comet 034. Calculation support depends on the selected engine and, for JPL, the loaded kernel. Unsupported targets return JME_ERR. |
JME_BODY_COMET_035 |
-1153 |
Body id for Comet 035. Calculation support depends on the selected engine and, for JPL, the loaded kernel. Unsupported targets return JME_ERR. |
JME_BODY_COMET_036 |
-1154 |
Body id for Comet 036. Calculation support depends on the selected engine and, for JPL, the loaded kernel. Unsupported targets return JME_ERR. |
JME_BODY_COMET_037 |
-1155 |
Body id for Comet 037. Calculation support depends on the selected engine and, for JPL, the loaded kernel. Unsupported targets return JME_ERR. |
JME_BODY_COMET_038 |
-1156 |
Body id for Comet 038. Calculation support depends on the selected engine and, for JPL, the loaded kernel. Unsupported targets return JME_ERR. |
JME_BODY_COMET_039 |
-1157 |
Body id for Comet 039. Calculation support depends on the selected engine and, for JPL, the loaded kernel. Unsupported targets return JME_ERR. |
JME_BODY_COMET_040 |
-1158 |
Body id for Comet 040. Calculation support depends on the selected engine and, for JPL, the loaded kernel. Unsupported targets return JME_ERR. |
JME_BODY_COMET_041 |
-1159 |
Body id for Comet 041. Calculation support depends on the selected engine and, for JPL, the loaded kernel. Unsupported targets return JME_ERR. |
JME_BODY_COMET_042 |
-1160 |
Body id for Comet 042. Calculation support depends on the selected engine and, for JPL, the loaded kernel. Unsupported targets return JME_ERR. |
JME_BODY_COMET_043 |
-1161 |
Body id for Comet 043. Calculation support depends on the selected engine and, for JPL, the loaded kernel. Unsupported targets return JME_ERR. |
JME_BODY_COMET_044 |
-1162 |
Body id for Comet 044. Calculation support depends on the selected engine and, for JPL, the loaded kernel. Unsupported targets return JME_ERR. |
JME_BODY_COMET_045 |
-1163 |
Body id for Comet 045. Calculation support depends on the selected engine and, for JPL, the loaded kernel. Unsupported targets return JME_ERR. |
JME_BODY_COMET_046 |
-1164 |
Body id for Comet 046. Calculation support depends on the selected engine and, for JPL, the loaded kernel. Unsupported targets return JME_ERR. |
JME_BODY_COMET_047 |
-1165 |
Body id for Comet 047. Calculation support depends on the selected engine and, for JPL, the loaded kernel. Unsupported targets return JME_ERR. |
JME_BODY_COMET_048 |
-1166 |
Body id for Comet 048. Calculation support depends on the selected engine and, for JPL, the loaded kernel. Unsupported targets return JME_ERR. |
JME_BODY_COMET_049 |
-1167 |
Body id for Comet 049. Calculation support depends on the selected engine and, for JPL, the loaded kernel. Unsupported targets return JME_ERR. |
JME_BODY_COMET_050 |
-1168 |
Body id for Comet 050. Calculation support depends on the selected engine and, for JPL, the loaded kernel. Unsupported targets return JME_ERR. |
JME_BODY_COMET_051 |
-1169 |
Body id for Comet 051. Calculation support depends on the selected engine and, for JPL, the loaded kernel. Unsupported targets return JME_ERR. |
JME_BODY_COMET_052 |
-1170 |
Body id for Comet 052. Calculation support depends on the selected engine and, for JPL, the loaded kernel. Unsupported targets return JME_ERR. |
JME_BODY_COMET_053 |
-1171 |
Body id for Comet 053. Calculation support depends on the selected engine and, for JPL, the loaded kernel. Unsupported targets return JME_ERR. |
JME_BODY_COMET_054 |
-1172 |
Body id for Comet 054. Calculation support depends on the selected engine and, for JPL, the loaded kernel. Unsupported targets return JME_ERR. |
JME_BODY_COMET_055 |
-1173 |
Body id for Comet 055. Calculation support depends on the selected engine and, for JPL, the loaded kernel. Unsupported targets return JME_ERR. |
JME_BODY_COMET_056 |
-1174 |
Body id for Comet 056. Calculation support depends on the selected engine and, for JPL, the loaded kernel. Unsupported targets return JME_ERR. |
JME_BODY_COMET_057 |
-1175 |
Body id for Comet 057. Calculation support depends on the selected engine and, for JPL, the loaded kernel. Unsupported targets return JME_ERR. |
JME_BODY_COMET_058 |
-1176 |
Body id for Comet 058. Calculation support depends on the selected engine and, for JPL, the loaded kernel. Unsupported targets return JME_ERR. |
JME_BODY_COMET_059 |
-1177 |
Body id for Comet 059. Calculation support depends on the selected engine and, for JPL, the loaded kernel. Unsupported targets return JME_ERR. |
JME_BODY_COMET_060 |
-1178 |
Body id for Comet 060. Calculation support depends on the selected engine and, for JPL, the loaded kernel. Unsupported targets return JME_ERR. |
JME_BODY_CRANTOR |
-1179 |
Body id for Crantor. Calculation support depends on the selected engine and, for JPL, the loaded kernel. Unsupported targets return JME_ERR. |
JME_BODY_CYLLARUS |
-1180 |
Body id for Cyllarus. Calculation support depends on the selected engine and, for JPL, the loaded kernel. Unsupported targets return JME_ERR. |
JME_BODY_DEUCALION |
-1181 |
Body id for Deucalion. Calculation support depends on the selected engine and, for JPL, the loaded kernel. Unsupported targets return JME_ERR. |
JME_BODY_ECHECLUS |
-1182 |
Body id for Echeclus. Calculation support depends on the selected engine and, for JPL, the loaded kernel. Unsupported targets return JME_ERR. |
JME_BODY_ELATUS |
-1183 |
Body id for Elatus. Calculation support depends on the selected engine and, for JPL, the loaded kernel. Unsupported targets return JME_ERR. |
JME_BODY_ERIS |
-1184 |
Body id for Eris. Calculation support depends on the selected engine and, for JPL, the loaded kernel. Unsupported targets return JME_ERR. |
JME_BODY_GONGGONG |
-1185 |
Body id for Gonggong. Calculation support depends on the selected engine and, for JPL, the loaded kernel. Unsupported targets return JME_ERR. |
JME_BODY_HAUMEA |
-1186 |
Body id for Haumea. Calculation support depends on the selected engine and, for JPL, the loaded kernel. Unsupported targets return JME_ERR. |
JME_BODY_HUYA |
-1187 |
Body id for Huya. Calculation support depends on the selected engine and, for JPL, the loaded kernel. Unsupported targets return JME_ERR. |
JME_BODY_HYLONOME |
-1188 |
Body id for Hylonome. Calculation support depends on the selected engine and, for JPL, the loaded kernel. Unsupported targets return JME_ERR. |
JME_BODY_IXION |
-1189 |
Body id for Ixion. Calculation support depends on the selected engine and, for JPL, the loaded kernel. Unsupported targets return JME_ERR. |
JME_BODY_JUNO |
-1190 |
Body id for Juno. Calculation support depends on the selected engine and, for JPL, the loaded kernel. Unsupported targets return JME_ERR. |
JME_BODY_MAKEMAKE |
-1191 |
Body id for Makemake. Calculation support depends on the selected engine and, for JPL, the loaded kernel. Unsupported targets return JME_ERR. |
JME_BODY_MINOR_PLANET_001 |
-1192 |
Body id for Minor Planet 001. Calculation support depends on the selected engine and, for JPL, the loaded kernel. Unsupported targets return JME_ERR. |
JME_BODY_MINOR_PLANET_002 |
-1193 |
Body id for Minor Planet 002. Calculation support depends on the selected engine and, for JPL, the loaded kernel. Unsupported targets return JME_ERR. |
JME_BODY_MINOR_PLANET_003 |
-1194 |
Body id for Minor Planet 003. Calculation support depends on the selected engine and, for JPL, the loaded kernel. Unsupported targets return JME_ERR. |
JME_BODY_MINOR_PLANET_004 |
-1195 |
Body id for Minor Planet 004. Calculation support depends on the selected engine and, for JPL, the loaded kernel. Unsupported targets return JME_ERR. |
JME_BODY_MINOR_PLANET_005 |
-1196 |
Body id for Minor Planet 005. Calculation support depends on the selected engine and, for JPL, the loaded kernel. Unsupported targets return JME_ERR. |
JME_BODY_MINOR_PLANET_006 |
-1197 |
Body id for Minor Planet 006. Calculation support depends on the selected engine and, for JPL, the loaded kernel. Unsupported targets return JME_ERR. |
JME_BODY_MINOR_PLANET_007 |
-1198 |
Body id for Minor Planet 007. Calculation support depends on the selected engine and, for JPL, the loaded kernel. Unsupported targets return JME_ERR. |
JME_BODY_MINOR_PLANET_008 |
-1199 |
Body id for Minor Planet 008. Calculation support depends on the selected engine and, for JPL, the loaded kernel. Unsupported targets return JME_ERR. |
JME_BODY_MINOR_PLANET_009 |
-1200 |
Body id for Minor Planet 009. Calculation support depends on the selected engine and, for JPL, the loaded kernel. Unsupported targets return JME_ERR. |
JME_BODY_MINOR_PLANET_010 |
-1201 |
Body id for Minor Planet 010. Calculation support depends on the selected engine and, for JPL, the loaded kernel. Unsupported targets return JME_ERR. |
JME_BODY_MINOR_PLANET_011 |
-1202 |
Body id for Minor Planet 011. Calculation support depends on the selected engine and, for JPL, the loaded kernel. Unsupported targets return JME_ERR. |
JME_BODY_MINOR_PLANET_012 |
-1203 |
Body id for Minor Planet 012. Calculation support depends on the selected engine and, for JPL, the loaded kernel. Unsupported targets return JME_ERR. |
JME_BODY_MINOR_PLANET_013 |
-1204 |
Body id for Minor Planet 013. Calculation support depends on the selected engine and, for JPL, the loaded kernel. Unsupported targets return JME_ERR. |
JME_BODY_MINOR_PLANET_014 |
-1205 |
Body id for Minor Planet 014. Calculation support depends on the selected engine and, for JPL, the loaded kernel. Unsupported targets return JME_ERR. |
JME_BODY_MINOR_PLANET_015 |
-1206 |
Body id for Minor Planet 015. Calculation support depends on the selected engine and, for JPL, the loaded kernel. Unsupported targets return JME_ERR. |
JME_BODY_MINOR_PLANET_016 |
-1207 |
Body id for Minor Planet 016. Calculation support depends on the selected engine and, for JPL, the loaded kernel. Unsupported targets return JME_ERR. |
JME_BODY_MINOR_PLANET_017 |
-1208 |
Body id for Minor Planet 017. Calculation support depends on the selected engine and, for JPL, the loaded kernel. Unsupported targets return JME_ERR. |
JME_BODY_MINOR_PLANET_018 |
-1209 |
Body id for Minor Planet 018. Calculation support depends on the selected engine and, for JPL, the loaded kernel. Unsupported targets return JME_ERR. |
JME_BODY_MINOR_PLANET_019 |
-1210 |
Body id for Minor Planet 019. Calculation support depends on the selected engine and, for JPL, the loaded kernel. Unsupported targets return JME_ERR. |
JME_BODY_MINOR_PLANET_020 |
-1211 |
Body id for Minor Planet 020. Calculation support depends on the selected engine and, for JPL, the loaded kernel. Unsupported targets return JME_ERR. |
JME_BODY_MINOR_PLANET_021 |
-1212 |
Body id for Minor Planet 021. Calculation support depends on the selected engine and, for JPL, the loaded kernel. Unsupported targets return JME_ERR. |
JME_BODY_MINOR_PLANET_022 |
-1213 |
Body id for Minor Planet 022. Calculation support depends on the selected engine and, for JPL, the loaded kernel. Unsupported targets return JME_ERR. |
JME_BODY_MINOR_PLANET_023 |
-1214 |
Body id for Minor Planet 023. Calculation support depends on the selected engine and, for JPL, the loaded kernel. Unsupported targets return JME_ERR. |
JME_BODY_MINOR_PLANET_024 |
-1215 |
Body id for Minor Planet 024. Calculation support depends on the selected engine and, for JPL, the loaded kernel. Unsupported targets return JME_ERR. |
JME_BODY_MINOR_PLANET_025 |
-1216 |
Body id for Minor Planet 025. Calculation support depends on the selected engine and, for JPL, the loaded kernel. Unsupported targets return JME_ERR. |
JME_BODY_MINOR_PLANET_026 |
-1217 |
Body id for Minor Planet 026. Calculation support depends on the selected engine and, for JPL, the loaded kernel. Unsupported targets return JME_ERR. |
JME_BODY_MINOR_PLANET_027 |
-1218 |
Body id for Minor Planet 027. Calculation support depends on the selected engine and, for JPL, the loaded kernel. Unsupported targets return JME_ERR. |
JME_BODY_MINOR_PLANET_028 |
-1219 |
Body id for Minor Planet 028. Calculation support depends on the selected engine and, for JPL, the loaded kernel. Unsupported targets return JME_ERR. |
JME_BODY_MINOR_PLANET_029 |
-1220 |
Body id for Minor Planet 029. Calculation support depends on the selected engine and, for JPL, the loaded kernel. Unsupported targets return JME_ERR. |
JME_BODY_MINOR_PLANET_030 |
-1221 |
Body id for Minor Planet 030. Calculation support depends on the selected engine and, for JPL, the loaded kernel. Unsupported targets return JME_ERR. |
JME_BODY_MINOR_PLANET_031 |
-1222 |
Body id for Minor Planet 031. Calculation support depends on the selected engine and, for JPL, the loaded kernel. Unsupported targets return JME_ERR. |
JME_BODY_MINOR_PLANET_032 |
-1223 |
Body id for Minor Planet 032. Calculation support depends on the selected engine and, for JPL, the loaded kernel. Unsupported targets return JME_ERR. |
JME_BODY_MINOR_PLANET_033 |
-1224 |
Body id for Minor Planet 033. Calculation support depends on the selected engine and, for JPL, the loaded kernel. Unsupported targets return JME_ERR. |
JME_BODY_MINOR_PLANET_034 |
-1225 |
Body id for Minor Planet 034. Calculation support depends on the selected engine and, for JPL, the loaded kernel. Unsupported targets return JME_ERR. |
JME_BODY_MINOR_PLANET_035 |
-1226 |
Body id for Minor Planet 035. Calculation support depends on the selected engine and, for JPL, the loaded kernel. Unsupported targets return JME_ERR. |
JME_BODY_MINOR_PLANET_036 |
-1227 |
Body id for Minor Planet 036. Calculation support depends on the selected engine and, for JPL, the loaded kernel. Unsupported targets return JME_ERR. |
JME_BODY_MINOR_PLANET_037 |
-1228 |
Body id for Minor Planet 037. Calculation support depends on the selected engine and, for JPL, the loaded kernel. Unsupported targets return JME_ERR. |
JME_BODY_MINOR_PLANET_038 |
-1229 |
Body id for Minor Planet 038. Calculation support depends on the selected engine and, for JPL, the loaded kernel. Unsupported targets return JME_ERR. |
JME_BODY_MINOR_PLANET_039 |
-1230 |
Body id for Minor Planet 039. Calculation support depends on the selected engine and, for JPL, the loaded kernel. Unsupported targets return JME_ERR. |
JME_BODY_MINOR_PLANET_040 |
-1231 |
Body id for Minor Planet 040. Calculation support depends on the selected engine and, for JPL, the loaded kernel. Unsupported targets return JME_ERR. |
JME_BODY_MINOR_PLANET_041 |
-1232 |
Body id for Minor Planet 041. Calculation support depends on the selected engine and, for JPL, the loaded kernel. Unsupported targets return JME_ERR. |
JME_BODY_MINOR_PLANET_042 |
-1233 |
Body id for Minor Planet 042. Calculation support depends on the selected engine and, for JPL, the loaded kernel. Unsupported targets return JME_ERR. |
JME_BODY_MINOR_PLANET_043 |
-1234 |
Body id for Minor Planet 043. Calculation support depends on the selected engine and, for JPL, the loaded kernel. Unsupported targets return JME_ERR. |
JME_BODY_MINOR_PLANET_044 |
-1235 |
Body id for Minor Planet 044. Calculation support depends on the selected engine and, for JPL, the loaded kernel. Unsupported targets return JME_ERR. |
JME_BODY_MINOR_PLANET_045 |
-1236 |
Body id for Minor Planet 045. Calculation support depends on the selected engine and, for JPL, the loaded kernel. Unsupported targets return JME_ERR. |
JME_BODY_MINOR_PLANET_046 |
-1237 |
Body id for Minor Planet 046. Calculation support depends on the selected engine and, for JPL, the loaded kernel. Unsupported targets return JME_ERR. |
JME_BODY_MINOR_PLANET_047 |
-1238 |
Body id for Minor Planet 047. Calculation support depends on the selected engine and, for JPL, the loaded kernel. Unsupported targets return JME_ERR. |
JME_BODY_MINOR_PLANET_048 |
-1239 |
Body id for Minor Planet 048. Calculation support depends on the selected engine and, for JPL, the loaded kernel. Unsupported targets return JME_ERR. |
JME_BODY_MINOR_PLANET_049 |
-1240 |
Body id for Minor Planet 049. Calculation support depends on the selected engine and, for JPL, the loaded kernel. Unsupported targets return JME_ERR. |
JME_BODY_MINOR_PLANET_050 |
-1241 |
Body id for Minor Planet 050. Calculation support depends on the selected engine and, for JPL, the loaded kernel. Unsupported targets return JME_ERR. |
JME_BODY_MINOR_PLANET_051 |
-1242 |
Body id for Minor Planet 051. Calculation support depends on the selected engine and, for JPL, the loaded kernel. Unsupported targets return JME_ERR. |
JME_BODY_MINOR_PLANET_052 |
-1243 |
Body id for Minor Planet 052. Calculation support depends on the selected engine and, for JPL, the loaded kernel. Unsupported targets return JME_ERR. |
JME_BODY_MINOR_PLANET_053 |
-1244 |
Body id for Minor Planet 053. Calculation support depends on the selected engine and, for JPL, the loaded kernel. Unsupported targets return JME_ERR. |
JME_BODY_MINOR_PLANET_054 |
-1245 |
Body id for Minor Planet 054. Calculation support depends on the selected engine and, for JPL, the loaded kernel. Unsupported targets return JME_ERR. |
JME_BODY_MINOR_PLANET_055 |
-1246 |
Body id for Minor Planet 055. Calculation support depends on the selected engine and, for JPL, the loaded kernel. Unsupported targets return JME_ERR. |
JME_BODY_MINOR_PLANET_056 |
-1247 |
Body id for Minor Planet 056. Calculation support depends on the selected engine and, for JPL, the loaded kernel. Unsupported targets return JME_ERR. |
JME_BODY_MINOR_PLANET_057 |
-1248 |
Body id for Minor Planet 057. Calculation support depends on the selected engine and, for JPL, the loaded kernel. Unsupported targets return JME_ERR. |
JME_BODY_MINOR_PLANET_058 |
-1249 |
Body id for Minor Planet 058. Calculation support depends on the selected engine and, for JPL, the loaded kernel. Unsupported targets return JME_ERR. |
JME_BODY_MINOR_PLANET_059 |
-1250 |
Body id for Minor Planet 059. Calculation support depends on the selected engine and, for JPL, the loaded kernel. Unsupported targets return JME_ERR. |
JME_BODY_MINOR_PLANET_060 |
-1251 |
Body id for Minor Planet 060. Calculation support depends on the selected engine and, for JPL, the loaded kernel. Unsupported targets return JME_ERR. |
JME_BODY_NESSUS |
-1252 |
Body id for Nessus. Calculation support depends on the selected engine and, for JPL, the loaded kernel. Unsupported targets return JME_ERR. |
JME_BODY_OKYRHOE |
-1253 |
Body id for Okyrhoe. Calculation support depends on the selected engine and, for JPL, the loaded kernel. Unsupported targets return JME_ERR. |
JME_BODY_ORCUS |
-1254 |
Body id for Orcus. Calculation support depends on the selected engine and, for JPL, the loaded kernel. Unsupported targets return JME_ERR. |
JME_BODY_PALLAS |
-1255 |
Body id for Pallas. Calculation support depends on the selected engine and, for JPL, the loaded kernel. Unsupported targets return JME_ERR. |
JME_BODY_PELOPS |
-1256 |
Body id for Pelops. Calculation support depends on the selected engine and, for JPL, the loaded kernel. Unsupported targets return JME_ERR. |
JME_BODY_PHOLUS |
-1257 |
Body id for Pholus. Calculation support depends on the selected engine and, for JPL, the loaded kernel. Unsupported targets return JME_ERR. |
JME_BODY_QUAOAR |
-1258 |
Body id for Quaoar. Calculation support depends on the selected engine and, for JPL, the loaded kernel. Unsupported targets return JME_ERR. |
JME_BODY_RHADAMANTHUS |
-1259 |
Body id for Rhadamanthus. Calculation support depends on the selected engine and, for JPL, the loaded kernel. Unsupported targets return JME_ERR. |
JME_BODY_SALACIA |
-1260 |
Body id for Salacia. Calculation support depends on the selected engine and, for JPL, the loaded kernel. Unsupported targets return JME_ERR. |
JME_BODY_SEDNA |
-1261 |
Body id for Sedna. Calculation support depends on the selected engine and, for JPL, the loaded kernel. Unsupported targets return JME_ERR. |
JME_BODY_THEREUS |
-1262 |
Body id for Thereus. Calculation support depends on the selected engine and, for JPL, the loaded kernel. Unsupported targets return JME_ERR. |
JME_BODY_TYTHONUS |
-1263 |
Body id for Tythonus. Calculation support depends on the selected engine and, for JPL, the loaded kernel. Unsupported targets return JME_ERR. |
JME_BODY_VARUNA |
-1264 |
Body id for Varuna. Calculation support depends on the selected engine and, for JPL, the loaded kernel. Unsupported targets return JME_ERR. |
JME_BODY_VESTA |
-1265 |
Body id for Vesta. Calculation support depends on the selected engine and, for JPL, the loaded kernel. Unsupported targets return JME_ERR. |
Constant group
Combine these bits in the flags argument of jme_calc, jme_calc_ut, and the calls that share that flags word. Pass 0 for the default place. jme_calc still fills the six result slots when JME_CALC_SPEED is absent.
| Constant | Value | Use |
|---|---|---|
JME_CALC_NONE |
0 |
No extra bits. Pass this, or the number 0, when you want the default place. Combine it with other JME_CALC_* bits in flags. |
JME_CALC_SPEED |
1 |
Speed bit. jme_calc and jme_calc_ut still fill indexes 3–5, the rates, whether or not you set it. Combine it with other JME_CALC_* bits in flags. |
JME_CALC_EQUATORIAL |
2 |
Ask for equatorial coordinates instead of ecliptic coordinates. Combine it with other JME_CALC_* bits in flags. |
JME_CALC_XYZ |
4 |
Ask for a rectangular vector. Same bit value as JME_CALC_RECTANGULAR and JME_CALC_RAW_VECTOR. Combine it with other JME_CALC_* bits in flags. |
JME_CALC_RADIANS |
8 |
Return angles in radians instead of degrees. Combine it with other JME_CALC_* bits in flags. |
JME_CALC_BARYCENTRIC |
16 |
Use the solar-system barycentre as the origin. Combine it with other JME_CALC_* bits in flags. |
JME_CALC_HELIOCENTRIC |
32 |
Use the Sun as the origin. Combine it with other JME_CALC_* bits in flags. |
JME_CALC_TRUE_POSITION |
64 |
Ask for the true geometric place rather than the apparent place. Combine it with other JME_CALC_* bits in flags. |
JME_CALC_J2000 |
128 |
Express the place in the J2000 frame. Combine it with other JME_CALC_* bits in flags. |
JME_CALC_NO_NUTATION |
256 |
Leave nutation out of this call. Combine it with other JME_CALC_* bits in flags. |
JME_CALC_SIDEREAL |
512 |
Subtract the active ayanamsa. Set the mode first with jme_set_sidereal_mode. Combine it with other JME_CALC_* bits in flags. |
JME_CALC_APPARENT_POSITION |
0 |
The apparent-place choice. Its value is 0, so it is the default when no true-position bit is set. Combine it with other JME_CALC_* bits in flags. |
JME_CALC_ASTROMETRIC |
3072 |
Astrometric place: light time and light deflection without aberration. It combines the no-aberration and no-deflection bits as this enum defines them. Combine it with other JME_CALC_* bits in flags. |
JME_CALC_CENTER_BODY |
4096 |
Take the centre from the call that has a centre argument, rather than from the default. Combine it with other JME_CALC_* bits in flags. |
JME_CALC_DISTANCE_AU |
0 |
Distance in astronomical units. Its value is 0, so it is the default distance unit. Combine it with other JME_CALC_* bits in flags. |
JME_CALC_DISTANCE_KM |
8192 |
Distance in kilometres. Combine it with other JME_CALC_* bits in flags. |
JME_CALC_HIGH_PRECISION |
16384 |
High-precision request bit. The published reduction does not drop series terms when this bit is absent. Combine it with other JME_CALC_* bits in flags. |
JME_CALC_ICRS |
32768 |
Express the place in the ICRS frame. Combine it with other JME_CALC_* bits in flags. |
JME_CALC_NO_ABERRATION |
1024 |
Leave aberration out of an apparent place. Combine it with other JME_CALC_* bits in flags. |
JME_CALC_NO_LIGHT_DEFLECTION |
2048 |
Leave gravitational light deflection out. Combine it with other JME_CALC_* bits in flags. |
JME_CALC_RAW_VECTOR |
4 |
Rectangular vector. Same value as JME_CALC_XYZ. Combine it with other JME_CALC_* bits in flags. |
JME_CALC_RECTANGULAR |
4 |
Rectangular coordinates. Same value as JME_CALC_XYZ. Combine it with other JME_CALC_* bits in flags. |
JME_CALC_SPHERICAL |
0 |
Spherical coordinates. Its value is 0, so it is the default shape. Combine it with other JME_CALC_* bits in flags. |
JME_CALC_STRICT |
65536 |
Fail instead of substituting another model or another centre. Combine it with other JME_CALC_* bits in flags. |
JME_CALC_TOPOCENTRIC |
131072 |
Compute for the observer stored by jme_set_topo. Combine it with other JME_CALC_* bits in flags. |
JME_CALC_VELOCITY_PER_DAY |
0 |
Rates per day. Its value is 0, so it is the default rate unit. Combine it with other JME_CALC_* bits in flags. |
JME_CALC_VELOCITY_PER_SECOND |
262144 |
Rates per second. Combine it with other JME_CALC_* bits in flags. |
Constant group
Pass these to calendar and time calls: which calendar, which time scale, and which Delta-T or tidal choice.
| Constant | Value | Use |
|---|---|---|
JME_SECONDS_PER_DAY |
86400.0 |
Length of a day in seconds, 86400. Use it to turn a Julian-date fraction into seconds. |
JME_CALENDAR_JULIAN |
0 |
Calendar-system selector. |
JME_CALENDAR_GREGORIAN |
1 |
Calendar-system selector. |
JME_TIME_DELTAT_AUTOMATIC |
389 |
Default Delta-T choice for jme_delta_t_ex: IERS values where the embedded table covers the date, the 2021 Stephenson revision before that table, and Espenak–Meeus 2006 after it. |
JME_TIME_TIDAL_AUTOMATIC |
390 |
Tidal choice that applies no extra historical correction. Pass this to jme_set_tid_acc when you do not want a DE-specific acceleration. |
JME_TIME_TIDAL_DE200 |
391 |
Tidal acceleration associated with the DE200 planetary ephemeris. Pass this to jme_set_tid_acc when long-range Delta-T should follow that ephemeris. |
JME_TIME_TIDAL_DE403 |
392 |
Tidal acceleration associated with the DE403 planetary ephemeris. Pass this to jme_set_tid_acc when long-range Delta-T should follow that ephemeris. |
JME_TIME_TIDAL_DE404 |
393 |
Tidal acceleration associated with the DE404 planetary ephemeris. Pass this to jme_set_tid_acc when long-range Delta-T should follow that ephemeris. |
JME_TIME_TIDAL_DE405 |
394 |
Tidal acceleration associated with the DE405 planetary ephemeris. Pass this to jme_set_tid_acc when long-range Delta-T should follow that ephemeris. |
JME_TIME_TIDAL_DE406 |
395 |
Tidal acceleration associated with the DE406 planetary ephemeris. Pass this to jme_set_tid_acc when long-range Delta-T should follow that ephemeris. |
JME_TIME_TIDAL_DE421 |
396 |
Tidal acceleration associated with the DE421 planetary ephemeris. Pass this to jme_set_tid_acc when long-range Delta-T should follow that ephemeris. |
JME_TIME_TIDAL_DE430 |
397 |
Tidal acceleration associated with the DE430 planetary ephemeris. Pass this to jme_set_tid_acc when long-range Delta-T should follow that ephemeris. |
JME_TIME_TIDAL_DE431 |
398 |
Tidal acceleration associated with the DE431 planetary ephemeris. Pass this to jme_set_tid_acc when long-range Delta-T should follow that ephemeris. |
JME_TIME_TIDAL_DE441 |
399 |
Tidal acceleration associated with the DE441 planetary ephemeris. Pass this to jme_set_tid_acc when long-range Delta-T should follow that ephemeris. No historical tidal acceleration has been published for DE441, so pre-1955 Delta-T then returns a non-finite value and an error. |
Constant group
These name eclipse contacts and eclipse types. Use them to read a circumstance value or to recognise a returned type. They are not a replacement for the eclipse search calls.
| Constant | Value | Use |
|---|---|---|
JME_ECLIPSE_FIRST_CONTACT |
295 |
First contact, the start of the partial phase. Read it against the attributes returned by the eclipse calls. |
JME_ECLIPSE_FOURTH_CONTACT |
296 |
Fourth contact, the end of the partial phase. Read it against the attributes returned by the eclipse calls. |
JME_ECLIPSE_LUNAR_PARTIAL |
297 |
Lunar eclipse type: partial. Read it against the attributes returned by the eclipse calls. |
JME_ECLIPSE_LUNAR_PENUMBRAL |
298 |
Lunar eclipse type: penumbral. Read it against the attributes returned by the eclipse calls. |
JME_ECLIPSE_LUNAR_TOTAL |
299 |
Lunar eclipse type: total. Read it against the attributes returned by the eclipse calls. |
JME_ECLIPSE_MAX_VISIBLE |
300 |
Maximum eclipse at the place you asked about. Read it against the attributes returned by the eclipse calls. |
JME_ECLIPSE_PENUMBRAL_BEGIN |
301 |
Start of the penumbral phase of a lunar eclipse. Read it against the attributes returned by the eclipse calls. |
JME_ECLIPSE_PENUMBRAL_END |
302 |
End of the penumbral phase of a lunar eclipse. Read it against the attributes returned by the eclipse calls. |
JME_ECLIPSE_SECOND_CONTACT |
303 |
Second contact, the start of totality or annularity. Read it against the attributes returned by the eclipse calls. |
JME_ECLIPSE_SOLAR_ANNULAR |
304 |
Solar eclipse type: annular. Read it against the attributes returned by the eclipse calls. |
JME_ECLIPSE_SOLAR_CENTRAL |
305 |
The axis of the shadow meets the Earth. Read it against the attributes returned by the eclipse calls. |
JME_ECLIPSE_SOLAR_HYBRID |
306 |
Solar eclipse type: hybrid, annular on part of the path and total on part. Read it against the attributes returned by the eclipse calls. |
JME_ECLIPSE_SOLAR_NONCENTRAL |
307 |
The eclipse is not central. Read it against the attributes returned by the eclipse calls. |
JME_ECLIPSE_SOLAR_PARTIAL |
308 |
Solar eclipse type: partial. Read it against the attributes returned by the eclipse calls. |
JME_ECLIPSE_SOLAR_TOTAL |
309 |
Solar eclipse type: total. Read it against the attributes returned by the eclipse calls. |
JME_ECLIPSE_THIRD_CONTACT |
310 |
Third contact, the end of totality or annularity. Read it against the attributes returned by the eclipse calls. |
JME_ECLIPSE_VISIBLE |
311 |
The eclipse is visible for the circumstance you tested. Read it against the attributes returned by the eclipse calls. |
Constant group
Pass one of these as house_system to jme_houses, jme_houses_ex, or jme_houses_ex2. JME_HOUSE_GAUQUELIN is not accepted there. Gauquelin sectors use jme_houses_gauquelin.
| Constant | Value | Use |
|---|---|---|
JME_HOUSE_ALCABITIUS |
312 |
Alcabitius houses. Pass it as house_system to jme_houses, jme_houses_ex, or jme_houses_ex2. |
JME_HOUSE_APC |
313 |
APC houses. Pass it as house_system to jme_houses, jme_houses_ex, or jme_houses_ex2. |
JME_HOUSE_AZIMUTHAL |
314 |
Azimuthal or horizontal-azimuth houses. Pass it as house_system to jme_houses, jme_houses_ex, or jme_houses_ex2. |
JME_HOUSE_CAMPANUS |
315 |
Campanus houses. Pass it as house_system to jme_houses, jme_houses_ex, or jme_houses_ex2. |
JME_HOUSE_EQUAL |
316 |
Equal houses from the Ascendant. Pass it as house_system to jme_houses, jme_houses_ex, or jme_houses_ex2. |
JME_HOUSE_GAUQUELIN |
317 |
Gauquelin sector id. Do not pass it to jme_houses. Call jme_houses_gauquelin, which returns 36 sectors. |
JME_HOUSE_HORIZONTAL |
318 |
Horizontal houses. Pass it as house_system to jme_houses, jme_houses_ex, or jme_houses_ex2. |
JME_HOUSE_KOCH |
319 |
Koch houses. Pass it as house_system to jme_houses, jme_houses_ex, or jme_houses_ex2. |
JME_HOUSE_KRUSINSKI |
320 |
Krusinski houses. Pass it as house_system to jme_houses, jme_houses_ex, or jme_houses_ex2. |
JME_HOUSE_MERIDIAN |
321 |
Meridian houses. Pass it as house_system to jme_houses, jme_houses_ex, or jme_houses_ex2. |
JME_HOUSE_MORINUS |
322 |
Morinus houses. Pass it as house_system to jme_houses, jme_houses_ex, or jme_houses_ex2. |
JME_HOUSE_PLACIDUS |
323 |
Placidus houses. This is the usual time-based system. Pass it as house_system to jme_houses, jme_houses_ex, or jme_houses_ex2. |
JME_HOUSE_POLICH_PAGE |
324 |
Polich-Page, or topocentric, houses. Pass it as house_system to jme_houses, jme_houses_ex, or jme_houses_ex2. |
JME_HOUSE_PORPHYRIUS |
325 |
Porphyry houses. Pass it as house_system to jme_houses, jme_houses_ex, or jme_houses_ex2. |
JME_HOUSE_REGIOMONTANUS |
326 |
Regiomontanus houses. Pass it as house_system to jme_houses, jme_houses_ex, or jme_houses_ex2. |
JME_HOUSE_SUNSHINE |
327 |
Sunshine houses, which use the Sun's declination. Pass it as house_system to jme_houses, jme_houses_ex, or jme_houses_ex2. |
JME_HOUSE_VEHLOW_EQUAL |
328 |
Vehlow equal houses. Pass it as house_system to jme_houses, jme_houses_ex, or jme_houses_ex2. |
JME_HOUSE_WHOLE_SIGN |
329 |
Whole-sign houses. Pass it as house_system to jme_houses, jme_houses_ex, or jme_houses_ex2. |
Constant group
Use these with the low-level kernel calls: vector units, orientation units, and the planet-centre policy.
| Constant | Value | Use |
|---|---|---|
JME_JPL_TIMESCALE_UNKNOWN |
0 |
JPL/CALCEPH kernel, target, or metadata selector. |
JME_JPL_TIMESCALE_TDB |
1 |
JPL/CALCEPH kernel, target, or metadata selector. |
JME_JPL_TIMESCALE_TCB |
2 |
JPL/CALCEPH kernel, target, or metadata selector. |
Constant group
Pass these to the model getters and to jme_set_astro_models when you need a named precession, nutation, obliquity, bias, or Delta-T series.
| Constant | Value | Use |
|---|---|---|
JME_VECTOR_AU_PER_DAY |
0 |
State unit: astronomical units and days. Pass this as unit to a kernel position call or to jme_state_convert_units. It is the usual default. |
JME_VECTOR_KM_PER_DAY |
1 |
State unit: kilometres and days. |
JME_VECTOR_AU_PER_SECOND |
2 |
State unit: astronomical units and seconds. |
JME_VECTOR_KM_PER_SECOND |
3 |
State unit: kilometres and seconds. |
JME_ORIENTATION_RAD_PER_DAY |
0 |
Orientation unit: radians and days. Pass this as unit to a kernel orientation or angular-momentum call. |
JME_ORIENTATION_RAD_PER_SECOND |
1 |
Orientation unit: radians and seconds. |
JME_MODEL_BIAS_IAU2000 |
330 |
IAU 2000 frame bias. |
JME_MODEL_BIAS_IAU2006 |
331 |
IAU 2006 frame bias. |
JME_MODEL_BIAS_NONE |
332 |
No frame bias. Pass this when a matrix call should skip the bias rotation. |
JME_MODEL_NUT_IAU_1980 |
333 |
Nutation series IAU 1980. Pass this to jme_get_nutation or as the nutation token. |
JME_MODEL_NUT_IAU_2000A |
334 |
Nutation series IAU 2000A. |
JME_MODEL_NUT_IAU_2000B |
335 |
Nutation series IAU 2000B, the shorter 2000 series. |
JME_MODEL_OBL_IAU_1980 |
336 |
Obliquity polynomial IAU 1980. Pass this to jme_get_obliquity. |
JME_MODEL_OBL_IAU_2000 |
337 |
Obliquity polynomial IAU 2000. |
JME_MODEL_OBL_IAU_2006 |
338 |
Obliquity polynomial IAU 2006. |
JME_MODEL_PREC_IAU_1976 |
339 |
Precession IAU 1976. Pass this to jme_get_precession_matrix or as a precession token. |
JME_MODEL_PREC_IAU_2000 |
340 |
Precession IAU 2000. |
JME_MODEL_PREC_IAU_2006 |
341 |
Precession IAU 2006. |
JME_MODEL_PREC_LASKAR_1986 |
342 |
Precession Laskar 1986. From 1.1.0 this returns a matrix from Laskar's tables instead of an error. |
JME_MODEL_PREC_VONDRAK_2011 |
343 |
Precession Vondrák 2011, for long time spans. |
JME_MODEL_SIDT_IAU_1976 |
344 |
Sidereal-time model IAU 1976. |
JME_MODEL_SIDT_IAU_2006 |
345 |
Sidereal-time model IAU 2006. |
JME_MODEL_DELTAT_STEPHENSON_MORRISON_1984
|
346 |
Delta-T id for Stephenson and Morrison 1984. The source table is not in this library, so a request returns a non-finite value and an error. |
JME_MODEL_DELTAT_STEPHENSON_1997 |
347 |
Delta-T id for Stephenson 1997. The source table is not in this library, so a request returns a non-finite value and an error. |
JME_MODEL_DELTAT_STEPHENSON_MORRISON_2004
|
348 |
Delta-T id for Stephenson and Morrison 2004. The primary table is not transcribed here, so a request returns a non-finite value and an error. The separate linear-table id is the one that evaluates. |
JME_MODEL_DELTAT_ESPENAK_MEEUS_2006 |
349 |
Delta-T series of Espenak and Meeus 2006. Pass this to jme_delta_t_ex. Automatic mode uses it after the IERS table ends. |
JME_MODEL_DELTAT_STEPHENSON_ETC_2016 |
350 |
Delta-T from the published 2016 Table S15. Pass this to jme_delta_t_ex when you want that series rather than the 2021 revision used by automatic mode. |
JME_MODEL_REVISED_IAU_2000 |
401 |
Enum id for the revised IAU 2000 convention. Pass it only to a setter or getter that lists this id. It is not a position by itself. |
JME_MODEL_REVISED_IAU_2006 |
402 |
Enum id for the revised IAU 2006 convention. Pass it only where that id is documented. |
JME_MODEL_REVISED_PREC_LASKAR |
403 |
Enum id naming a revised Laskar precession. Pass it only where that id is documented. |
JME_MODEL_REVISED_PREC_VONDRAK |
404 |
Enum id naming a revised Vondrák precession. Pass it only where that id is documented. |
JME_MODEL_REVISED_PREC_LIESKE |
405 |
Enum id naming a revised Lieske precession. Pass it only where that id is documented. |
Constant group
Pass one of these as rsmi to jme_rise_trans or jme_rise_trans_true_hor. Rise, set, transit, and the twilights are different searches.
| Constant | Value | Use |
|---|---|---|
JME_RISE_ANTI_MERIDIAN_TRANSIT |
8 |
Search for the transit across the anti-meridian, the lower culmination. |
JME_RISE_ASTRONOMICAL_TWILIGHT |
512 |
Sun at the astronomical twilight depression. |
JME_RISE_CIVIL_TWILIGHT |
128 |
Sun at the civil twilight depression. |
JME_RISE_DISC_BOTTOM |
2048 |
Lower-limb horizon. Unsupported: jme_rise_trans returns JME_ERR when this bit is set. |
JME_RISE_DISC_CENTER |
256 |
Use the centre of the disc rather than the upper limb. |
JME_RISE_FIXED_DISC_SIZE |
1024 |
Keep the fixed horizon used by this engine (accepted). |
JME_RISE_HINDU_RISING |
4096 |
Hindu rising convention. Unsupported: jme_rise_trans returns JME_ERR when this bit is set. |
JME_RISE_MERIDIAN_TRANSIT |
4 |
Search for the transit across the meridian, the culmination. |
JME_RISE_NAUTICAL_TWILIGHT |
64 |
Sun at the nautical twilight depression. |
JME_RISE_NO_REFRACTION |
8192 |
Do not apply atmospheric refraction to the horizon. |
JME_RISE_RISE |
1 |
Search for rising. Pass this as rsmi when you want the moment the body comes up. |
JME_RISE_SET |
2 |
Search for setting. |
Constant group
Pass one of these to jme_set_sidereal_mode, or to an ayanamsa getter that takes a model. The epoch of each mode is described in AYANAMSA_MODELS.md.
| Constant | Value | Use |
|---|---|---|
JME_SIDEREAL_FAGAN_BRADLEY |
0 |
Ayanamsa FAGAN BRADLEY. Pass this to jme_set_sidereal_mode, or to an ayanamsa getter that takes a model, when sidereal longitudes should use this mode. The epoch is in AYANAMSA_MODELS.md. |
JME_SIDEREAL_LAHIRI |
1 |
Ayanamsa LAHIRI. Pass this to jme_set_sidereal_mode, or to an ayanamsa getter that takes a model, when sidereal longitudes should use this mode. The epoch is in AYANAMSA_MODELS.md. |
JME_SIDEREAL_USER |
255 |
User ayanamsa. Pass this to jme_set_sidereal_mode with your own epoch t0 and the ayanamsa ayan_t0 at that epoch. |
JME_SIDEREAL_ALDEBARAN_15TAU |
363 |
Ayanamsa ALDEBARAN 15TAU. Pass this to jme_set_sidereal_mode, or to an ayanamsa getter that takes a model, when sidereal longitudes should use this mode. The epoch is in AYANAMSA_MODELS.md. |
JME_SIDEREAL_ARYABHATA |
364 |
Ayanamsa ARYABHATA. Pass this to jme_set_sidereal_mode, or to an ayanamsa getter that takes a model, when sidereal longitudes should use this mode. The epoch is in AYANAMSA_MODELS.md. |
JME_SIDEREAL_B1950 |
365 |
Ayanamsa B1950. Pass this to jme_set_sidereal_mode, or to an ayanamsa getter that takes a model, when sidereal longitudes should use this mode. The epoch is in AYANAMSA_MODELS.md. |
JME_SIDEREAL_BABYL_ETPSC |
366 |
Ayanamsa BABYL ETPSC. Pass this to jme_set_sidereal_mode, or to an ayanamsa getter that takes a model, when sidereal longitudes should use this mode. The epoch is in AYANAMSA_MODELS.md. |
JME_SIDEREAL_BABYL_HUBER |
367 |
Ayanamsa BABYL HUBER. Pass this to jme_set_sidereal_mode, or to an ayanamsa getter that takes a model, when sidereal longitudes should use this mode. The epoch is in AYANAMSA_MODELS.md. |
JME_SIDEREAL_BABYL_KUGLER1 |
368 |
Ayanamsa BABYL KUGLER1. Pass this to jme_set_sidereal_mode, or to an ayanamsa getter that takes a model, when sidereal longitudes should use this mode. The epoch is in AYANAMSA_MODELS.md. |
JME_SIDEREAL_BABYL_KUGLER2 |
369 |
Ayanamsa BABYL KUGLER2. Pass this to jme_set_sidereal_mode, or to an ayanamsa getter that takes a model, when sidereal longitudes should use this mode. The epoch is in AYANAMSA_MODELS.md. |
JME_SIDEREAL_BABYL_KUGLER3 |
370 |
Ayanamsa BABYL KUGLER3. Pass this to jme_set_sidereal_mode, or to an ayanamsa getter that takes a model, when sidereal longitudes should use this mode. The epoch is in AYANAMSA_MODELS.md. |
JME_SIDEREAL_DELUCE |
371 |
Ayanamsa DELUCE. Pass this to jme_set_sidereal_mode, or to an ayanamsa getter that takes a model, when sidereal longitudes should use this mode. The epoch is in AYANAMSA_MODELS.md. |
JME_SIDEREAL_GALCENT_0SAG |
372 |
Ayanamsa GALCENT 0SAG. Pass this to jme_set_sidereal_mode, or to an ayanamsa getter that takes a model, when sidereal longitudes should use this mode. The epoch is in AYANAMSA_MODELS.md. |
JME_SIDEREAL_HIPPARCHOS |
373 |
Ayanamsa HIPPARCHOS. Pass this to jme_set_sidereal_mode, or to an ayanamsa getter that takes a model, when sidereal longitudes should use this mode. The epoch is in AYANAMSA_MODELS.md. |
JME_SIDEREAL_J1900 |
374 |
Ayanamsa J1900. Pass this to jme_set_sidereal_mode, or to an ayanamsa getter that takes a model, when sidereal longitudes should use this mode. The epoch is in AYANAMSA_MODELS.md. |
JME_SIDEREAL_J2000 |
375 |
Ayanamsa J2000. Pass this to jme_set_sidereal_mode, or to an ayanamsa getter that takes a model, when sidereal longitudes should use this mode. The epoch is in AYANAMSA_MODELS.md. |
JME_SIDEREAL_JN_BHASIN |
376 |
Ayanamsa JN BHASIN. Pass this to jme_set_sidereal_mode, or to an ayanamsa getter that takes a model, when sidereal longitudes should use this mode. The epoch is in AYANAMSA_MODELS.md. |
JME_SIDEREAL_KRISHNAMURTI |
377 |
Ayanamsa KRISHNAMURTI. Pass this to jme_set_sidereal_mode, or to an ayanamsa getter that takes a model, when sidereal longitudes should use this mode. The epoch is in AYANAMSA_MODELS.md. |
JME_SIDEREAL_RAMAN |
378 |
Ayanamsa RAMAN. Pass this to jme_set_sidereal_mode, or to an ayanamsa getter that takes a model, when sidereal longitudes should use this mode. The epoch is in AYANAMSA_MODELS.md. |
JME_SIDEREAL_SASSANIAN |
379 |
Ayanamsa SASSANIAN. Pass this to jme_set_sidereal_mode, or to an ayanamsa getter that takes a model, when sidereal longitudes should use this mode. The epoch is in AYANAMSA_MODELS.md. |
JME_SIDEREAL_SS_CITRA |
380 |
Ayanamsa SS CITRA. Pass this to jme_set_sidereal_mode, or to an ayanamsa getter that takes a model, when sidereal longitudes should use this mode. The epoch is in AYANAMSA_MODELS.md. |
JME_SIDEREAL_SS_REVATI |
381 |
Ayanamsa SS REVATI. Pass this to jme_set_sidereal_mode, or to an ayanamsa getter that takes a model, when sidereal longitudes should use this mode. The epoch is in AYANAMSA_MODELS.md. |
JME_SIDEREAL_SURYASIDDHANTA |
382 |
Ayanamsa SURYASIDDHANTA. Pass this to jme_set_sidereal_mode, or to an ayanamsa getter that takes a model, when sidereal longitudes should use this mode. The epoch is in AYANAMSA_MODELS.md. |
JME_SIDEREAL_TRUE_CITRA |
383 |
Ayanamsa TRUE CITRA. Pass this to jme_set_sidereal_mode, or to an ayanamsa getter that takes a model, when sidereal longitudes should use this mode. The epoch is in AYANAMSA_MODELS.md. |
JME_SIDEREAL_TRUE_MULA |
384 |
Ayanamsa TRUE MULA. Pass this to jme_set_sidereal_mode, or to an ayanamsa getter that takes a model, when sidereal longitudes should use this mode. The epoch is in AYANAMSA_MODELS.md. |
JME_SIDEREAL_TRUE_PUSHYA |
385 |
Ayanamsa TRUE PUSHYA. Pass this to jme_set_sidereal_mode, or to an ayanamsa getter that takes a model, when sidereal longitudes should use this mode. The epoch is in AYANAMSA_MODELS.md. |
JME_SIDEREAL_TRUE_REVATI |
386 |
Ayanamsa TRUE REVATI. Pass this to jme_set_sidereal_mode, or to an ayanamsa getter that takes a model, when sidereal longitudes should use this mode. The epoch is in AYANAMSA_MODELS.md. |
JME_SIDEREAL_USHASHASHI |
387 |
Ayanamsa USHASHASHI. Pass this to jme_set_sidereal_mode, or to an ayanamsa getter that takes a model, when sidereal longitudes should use this mode. The epoch is in AYANAMSA_MODELS.md. |
JME_SIDEREAL_YUKTESHWAR |
388 |
Ayanamsa YUKTESHWAR. Pass this to jme_set_sidereal_mode, or to an ayanamsa getter that takes a model, when sidereal longitudes should use this mode. The epoch is in AYANAMSA_MODELS.md. |
Constant group
JME_OK and JME_ERR are the status codes. The version and physical constants are for display and for your own unit conversions.
| Constant | Value | Use |
|---|---|---|
JME_JME_H |
1 |
Header include guard exported by the bindings. Not a calculation constant. |
JME_VERSION |
2.0.0 |
Version string of this library. jme_version copies it. This release is 2.0.0. |
JME_AU_KM |
149597870.7 |
Astronomical unit in kilometres, 149597870.700. Use it when you convert a distance yourself. Light-time inside the library already uses this value. |
JME_SPEED_OF_LIGHT_KM_PER_SEC |
299792.458 |
Speed of light in kilometres per second. Use it for your own light-time check. The library's reduction already uses the defined SI value. |
JME_OK |
0 |
Native success/error status code. |
JME_ERR |
-1 |
Native success/error status code. |
JME_EXTENDED_H |
1 |
Header include guard exported by the bindings. Not a calculation constant. |
JME_VERSION_ID |
400 |
Numeric id 400. It stays 400 across this release. It is not the package version. Read JME_VERSION or call jme_version for the version string. |
Constant group
Constants that entered in 1.1.0. They belong to time scales, ayanamsa flags, the planet-centre policy, and the engine report.
| Constant | Value | Use |
|---|---|---|
JME_TIME_SCALE_UTC |
0 |
Time scale for jme_time_scale_convert (ABI value). |
JME_TIME_SCALE_UT1 |
1 |
Time scale for jme_time_scale_convert (realised with the context Delta-T model). |
JME_TIME_SCALE_TAI |
2 |
Time scale for jme_time_scale_convert. |
JME_TIME_SCALE_TT |
3 |
Time scale for jme_time_scale_convert. |
JME_TIME_SCALE_TDB |
4 |
Time scale for jme_time_scale_convert. |
JME_TIME_SCALE_TCG |
5 |
Time scale for jme_time_scale_convert. |
JME_TIME_SCALE_TCB |
6 |
Time scale for jme_time_scale_convert. |
JME_AYANAMSA_MEAN |
0 |
jme_get_ayanamsa_ex2 flag: mean equinox of date. |
JME_AYANAMSA_TRUE |
1 |
jme_get_ayanamsa_ex2 flag: true equinox of date (mean + nutation in longitude). |
JME_JPL_CENTER_STRICT |
0 |
JPL planet-centre policy: missing planet centre is an error (default). |
JME_JPL_CENTER_BARYCENTER |
1 |
JPL planet-centre policy: use the system barycentre when the planet centre is missing (opt-in). |
JME_ENGINE_ID_JPL |
1 |
Engine reported by jme_calc_resolve_engine: JPL/CALCEPH. |
JME_ENGINE_ID_MOSHIER |
2 |
Engine reported by jme_calc_resolve_engine: Moshier. |
JME_ENGINE_ID_VSOP87_ELP82B |
3 |
Engine reported by jme_calc_resolve_engine: VSOP87A + ELP 2000-82B. |
JME_MODEL_NUT_IAU_2006A |
351 |
Nutation model: IAU 2000A with IAU 2006 (P03) adjustments (ERFA eraNut06a). |
JME_SIDEREAL_LAHIRI_ICRC |
406 |
Sidereal mode: Lahiri (ICRC definition). |
JME_MODEL_DELTAT_STEPHENSON_ETC_2021 |
407 |
Delta-T model: Morrison, Stephenson, Hohenkerk & Zawilski 2021 (Table S15, 2020 revision); used by AUTOMATIC before the IERS table. |
JME_MODEL_DELTAT_MS2004_TABLE1_LINEAR
|
408 |
Delta-T model: Morrison & Stephenson 2004 Table 1 with the authors' simple (linear) interpolation; their parabola -20 + 32t^2 outside the table. |
Check
Run the check in the repository you changed. The wrapper checks compare the generated surface with the C headers.
C
make test
make quality
PHP
composer verify:surface
composer quality
Python
python -m ruff check .
python -m ruff format . --check
python -m pyright
python -m pytest
Dart
./scripts/quality.sh