09-29-2022, 05:47 PM

Lambert’s problem is concerned with the determination of an orbit that passes between two positions within a specified time-of-flight. This classic astrodynamics problem is also known as the orbital two-point boundary value problem (TPBVP) or the flyby and rendezvous problems.

The algorithm implemented in this program is based on the method described in “A Practical Note on the Use of Lambert’s Equation” by Geza Gedeon, AIAA Journal, Volume 3, Number 1, 1965, pages 149-150. This iterative solution is valid for elliptic, parabolic and hyperbolic transfer orbits which may be either posigrade or retrograde, and involve one or more revolutions about the central body. Additional information can also be found in G. S. Gedeon, “Lambertian Mechanics”, Proceedings of the 12th International Astronautical Congress, Vol. I, 172-190.

This HP Prime program solves the Earth orbit Lambert problem. The user provides classical orbital elements for an initial and final orbit, and the time required to transfer from the initial to final orbits.

The following source code illustrates a typical example.

///////////////////////////

// initial orbital elements

///////////////////////////

// semimajor axis (kilometers)

oev1(1) := 8000.0;

// orbital eccentricity (non-dimensional)

oev1(2) := 0.0;

// orbital inclination (degrees)

oev1(3) := 28.5 * dtr;

// argument of perigee (degrees)

oev1(4) := 0.0 * dtr;

// right ascension of the ascending node (degrees)

oev1(5) := 100.0 * dtr;

// true anomaly (degrees)

oev1(6) := 0.0 * dtr;

/////////////////////////

// final orbital elements

/////////////////////////

// semimajor axis (kilometers)

oev2(1) := 8000.0;

// orbital eccentricity (non-dimensional)

oev2(2) := 0.0;

// orbital inclination (degrees)

oev2(3) := 28.5 * dtr;

// argument of perigee (degrees)

oev2(4) := 0.0 * dtr;

// right ascension of the ascending node (degrees)

oev2(5) := 100.0 * dtr;

// true anomaly (degrees)

oev2(6) := 170.0 * dtr;

// transfer time in minutes

ttmins := 56.0;

// orbital direction (1 = posigrade, 2 = retrograde)

direct := 2;

if (direct = 2) then

direct := 1;

end;

// maximum number of transfer orbits around the Earth

revmax := 0;

// time-of-flight in seconds

tof := 60.0 * ttmins;

The algorithm implemented in this program is based on the method described in “A Practical Note on the Use of Lambert’s Equation” by Geza Gedeon, AIAA Journal, Volume 3, Number 1, 1965, pages 149-150. This iterative solution is valid for elliptic, parabolic and hyperbolic transfer orbits which may be either posigrade or retrograde, and involve one or more revolutions about the central body. Additional information can also be found in G. S. Gedeon, “Lambertian Mechanics”, Proceedings of the 12th International Astronautical Congress, Vol. I, 172-190.

This HP Prime program solves the Earth orbit Lambert problem. The user provides classical orbital elements for an initial and final orbit, and the time required to transfer from the initial to final orbits.

The following source code illustrates a typical example.

///////////////////////////

// initial orbital elements

///////////////////////////

// semimajor axis (kilometers)

oev1(1) := 8000.0;

// orbital eccentricity (non-dimensional)

oev1(2) := 0.0;

// orbital inclination (degrees)

oev1(3) := 28.5 * dtr;

// argument of perigee (degrees)

oev1(4) := 0.0 * dtr;

// right ascension of the ascending node (degrees)

oev1(5) := 100.0 * dtr;

// true anomaly (degrees)

oev1(6) := 0.0 * dtr;

/////////////////////////

// final orbital elements

/////////////////////////

// semimajor axis (kilometers)

oev2(1) := 8000.0;

// orbital eccentricity (non-dimensional)

oev2(2) := 0.0;

// orbital inclination (degrees)

oev2(3) := 28.5 * dtr;

// argument of perigee (degrees)

oev2(4) := 0.0 * dtr;

// right ascension of the ascending node (degrees)

oev2(5) := 100.0 * dtr;

// true anomaly (degrees)

oev2(6) := 170.0 * dtr;

// transfer time in minutes

ttmins := 56.0;

// orbital direction (1 = posigrade, 2 = retrograde)

direct := 2;

if (direct = 2) then

direct := 1;

end;

// maximum number of transfer orbits around the Earth

revmax := 0;

// time-of-flight in seconds

tof := 60.0 * ttmins;