#include <scat.h> void transkepler(total_mass, orbit, oldtype, newtype) real total_mass; realptr orbit; int oldtype; int newtype;

Allowed types of orbit currently fall in three categories:
i) those in which the first three numbers specifying the orbit describe
the relative position and the second three numbers the relative velocity;
ii) classical orbital elements, in which the distinction between configuration
and velocity space can no longer be made; iii) coordinates which describe
the setup of a scattering experiment, with a finite initial distance but
a description in terms of the asymptotic parameters (*i.e.* for infinitely
early or late time). The following types are implemented (make sure to include
the file <scat.h> to access the macro implementation of these names):

i) CARTESIAN, SPHERICAL,

ii) TRUEANOMALY, ECCANOMALY, MEANANOMALY, PERIPASSAGE,

iii) SCATTERING.

The meaning of the six parameters orbit[0] through orbit[5] is as follows.

For CARTESIAN coordinates, {orbit[0]...orbit[5]} stands for
{z,x,y,vz,vx,vy}; *i.e.* the positions and velocities, but with the convention
that the order of the axes is: z-axis first, then x-axis, then y-axis.

For SPHERICAL coordinates, {orbit[0]...orbit[5]} stands for {rho, theta, phi, vr, vtheta, vphi}, where rho, theta and phi are the usual spherical coordinates, and vr, vtheta and vphi are the Cartesian velocities along unit vectors in the radial, theta and phi directions.

For TRUEANOMALY coordinates, {orbit[0]...orbit[5]} stands for {semimajor axis, eccentricity, inclination, longitude of the ascending node, argument of pericenter, true anomaly}.

For ECCANOMALY coordinates, {orbit[0]...orbit[5]} stands for {semimajor axis, eccentricity, inclination, longitude of the ascending node, argument of pericenter, eccentric anomaly}.

For MEANANOMALY coordinates, {orbit[0]...orbit[5]} stands for {semimajor axis, eccentricity, inclination, longitude of the ascending node, argument of pericenter, mean anomaly}.

For PERIPASSAGE coordinates, {orbit[0]...orbit[5]} stands for {semimajor axis, eccentricity, inclination, longitude of the ascending node, argument of pericenter, time of pericenter passage (with the current time taken to be zero)}.

For SCATTERING coordinates, {orbit[0]...orbit[5]} stands for {impact parameter, impact angle, distance, velocity at infinity, theta, phi}. The meaning of these parameters is as follows.

For TSCATTERING coordinates, {orbit[0]...orbit[5]} stands for {impact parameter, impact angle, encounter time, velocity at infinity, theta, phi}. The meaning of these parameters is as follows.

The *impact parameter* is the offset at infinity
from a head-on collision, *i.e.* the closest distance to the origin if the incoming
particle would move in a straight line, starting from an infinite separation,
instead of following a hyperbolic orbit; in other words, the impact parameter
is the closest distance to the origin of the asymptote to the hyperbolic
orbit.

For an incoming particle, the *impact angle* is defined as the angle
from the fiducial vector to the impact vector, in counter-clockwise direction
as seen from the origin. Here, the fiducial vector is a unit vector in
the plane spanned by the z-axis and the velocity vector at infinity, perpendicular
to the latter and with a positive z-component, i.e. pointing upwards; the
impact vector is a vector perpendicular to the velocity at infinity, with
a length equal to the impact parameter, pointing in the direction of the
offset with respect to a head-on collision. This can be clarified through
a constructive definition for the impact vector: introduce an extra incoming
particle with the same asymptotic velocity (velocity at infinity) but on
a head-on collision orbit. The impact vector is the vector from the position
of this particle to the position of the real incoming particle positioned
at such a point on its orbit that this vector is perpendicular to their
common velocity vector, and very far away from the origin. NOTE: in the
case of an outgoing orbit, the impact vector is similarly defined as the
offset with respect to a collision orbit at very late times after the scattering
event. Also in this case the fiducial vector points upwards, and the impact
angle is counted counter-clockwise as seen from the origin.

The *distance*
is the relative distance between the two bodies. Note that for any finite
distance, the relative velocity between the two particles is larger than
the asymptotic value, as measured at infinity.

The *encounter time* is the
time of closest encounter (pericenter passage) when the current time is
taken to be zero.

For ingoing orbits, the *velocity at infinity* is the absolute
value of the relative velocity in the limit that the two particles are
infinitely far removed and therefore approach the asymptote of their relative
kepler orbit. NOTE: a trick is used to discriminate between ingoing and
outgoing orbits: outgoing orbits are indicated by adding a minus sign to
the *velocity at infinity* is while ingoing orbits have the usual plus sign
(this is the case both for the SCATTERING as well as for the TSCATTERING
representation; the latter doesn’t need this trick, but is was kept there
as well to make the representations more uniform). BEWARE !! This is a
uncivilized hack, but it works.

*Theta* and *phi* are the usual spherical angles
as used in spherical coordinates, and are used here to point in the direction
of the ingoing or outgoing particle (as the case may be) as seen from
the origin at asymptotically early or late times. Thus for an incoming orbit,
the angles point in the direction exactly opposite to the velocity at time
t --> -infinity, while for an outgoing orbit, the angles point in the same
direction as the velocity at time t --> +infinity.

real tot_mass, orb_elements[6];

transkepler(tot_mass, orb_elements, CARTESIAN, ECCANOMALY);

kirin:/usr/piet/clib/kep2kep.c kirin:/usr/piet/clib/scat.h

13-Jan-88Version 1.0: createdPIET 10-Jun-88Version 1.1: createdPIET