Click or drag to resize

LambertOrbitSolver Class

Solves the orbit targeting problem and initial orbit determination. Given a set of input positions, and an optional time of flight, the solver will return the appropriate velocity vectors that determine the orbit.
Inheritance Hierarchy
SystemObject
  AGI.Foundation.PropagatorsLambertOrbitSolver

Namespace:  AGI.Foundation.Propagators
Assembly:  AGI.Foundation.Models (in AGI.Foundation.Models.dll) Version: 24.3.420.0 (24.3.420.0)
Syntax
public class LambertOrbitSolver

The LambertOrbitSolver type exposes the following members.

Constructors
Properties
  NameDescription
Public propertyCentralBodyRadius
Gets or sets the central body's radius which is used in the calculations to denote the surface.
Public propertyGravitationalParameter
Gets or sets the gravitational parameter of the central body, about which the solver is used.
Top
Methods
  NameDescription
Public methodEquals
Determines whether the specified object is equal to the current object.
(Inherited from Object.)
Protected methodFinalize
Allows an object to try to free resources and perform other cleanup operations before it is reclaimed by garbage collection.
(Inherited from Object.)
Public methodGetHashCode
Serves as the default hash function.
(Inherited from Object.)
Public methodGetType
Gets the Type of the current instance.
(Inherited from Object.)
Public methodLambertHodograph
This function accomplishes 180 deg transfer(and 360 deg) for the Lambert problem.
Protected methodMemberwiseClone
Creates a shallow copy of the current Object.
(Inherited from Object.)
Public methodSolveFixedDurationTransfer(Cartesian, Cartesian, Duration, Int32, LambertPathType, OrbitDirectionType)
Solves the classic Lambert problem with the specified number of revolutions.
Public methodSolveFixedDurationTransfer(Cartesian, Cartesian, Duration, Int32, LambertPathType, OrbitDirectionType, Cartesian)
Solves the classic Lambert problem with the specified number of revolutions.
Public methodSolveMinimumDurationMultipleRevolutionTransfer(Cartesian, Cartesian, Int32, LambertPathType, OrbitDirectionType)
Solves the constrained Lambert problem given the input. Solver is constrained to return the minimum-duration, multiple-revolution solution.
Public methodSolveMinimumDurationMultipleRevolutionTransfer(Cartesian, Cartesian, Int32, LambertPathType, OrbitDirectionType, Cartesian)
Solves the constrained Lambert problem given the input. Solver is constrained to return the minimum-duration, multiple-revolution solution.
Public methodSolveMinimumEccentricityTransfer(Cartesian, Cartesian)
Solves the constrained Lambert problem given the input. The solver is constrained to return the minimum eccentricity orbit.
Public methodSolveMinimumEccentricityTransfer(Cartesian, Cartesian, Cartesian)
Solves the constrained Lambert problem given the input. The solver is constrained to return the minimum eccentricity orbit.
Public methodSolveMinimumEnergyTransfer(Cartesian, Cartesian)
Solves the constrained Lambert problem given the input. The solver is constrained to return the minimum energy solution.
Public methodSolveMinimumEnergyTransfer(Cartesian, Cartesian, Cartesian)
Solves the constrained Lambert problem given the input. The solver is constrained to return the minimum energy solution.
Public methodSolveParabolicTransfer(Cartesian, Cartesian, OrbitDirectionType)
Solves the constrained Lambert problem given the input. Solver is constrained to return the parabolic solution.
Public methodSolveParabolicTransfer(Cartesian, Cartesian, OrbitDirectionType, Cartesian)
Solves the constrained Lambert problem given the input. Solver is constrained to return the parabolic solution.
Public methodToString
Returns a string that represents the current object.
(Inherited from Object.)
Top
Events
  NameDescription
Public eventFailedToConvergeEvent
Raised when the fixed duration method fails to converge.
Top
Remarks

For the fixed duration based methods the solver uses the following default values:

  • Convergence tolerance: 1e-13.

  • Maximum solver iterations: 30.

  • Number of terms in continuous fraction calculations: 20.

Altering these values is generally not recommended.

For solving orbits that entail 180 degree transfers the orbital plane is ambiguous. Some methods take an orbital plane vector to define the plane that the transfer takes place in. This vector is crossed with the initial position vector to obtain the orbital plane. This vector is usually the initial velocity vector. If no vector is supplied and a 180 degree transfer is indicated, the algorithm will create an orbital plane vector based on the largest components of the initial position vector.

The implementation of this solver is based upon the analysis and mathematics contained in the text, "An Introduction to the Mathematics and Methods of Astrodynamics", R. Battin, 1987 and in the paper, "A Fast and Robust Multiple Revolution Lambert Algorithm Using a Cosine Transformation", N. Arora and R. Russell, AAS 13-728.

See Also