Class IodLambert
- java.lang.Object
-
- org.orekit.estimation.iod.IodLambert
-
public class IodLambert extends Object
Lambert position-based Initial Orbit Determination (IOD) algorithm, assuming Keplerian motion.An orbit is determined from two position vectors.
- Since:
- 8.0
- Author:
- Joris Olympio
- See Also:
LambertSolver
-
-
Constructor Summary
Constructors Constructor Description IodLambert(double mu)Creator with a Lambert solver with default Householder solver parameters.IodLambert(LambertSolver lambertSolver)Creator with a provided Lambert solver.
-
Method Summary
All Methods Instance Methods Concrete Methods Modifier and Type Method Description Orbitestimate(Frame frame, boolean posigrade, int nRev, Vector3D p1, AbsoluteDate t1, Vector3D p2, AbsoluteDate t2)Estimate a Keplerian orbit given two position vectors and a duration.Orbitestimate(Frame frame, boolean posigrade, int nRev, Position p1, Position p2)Estimate an initial orbit from two position measurements.Orbitestimate(Frame frame, boolean posigrade, int nRev, PV pv1, PV pv2)Estimate an initial orbit from two PV measurements.
-
-
-
Constructor Detail
-
IodLambert
public IodLambert(LambertSolver lambertSolver)
Creator with a provided Lambert solver.- Parameters:
lambertSolver- solver for the Lambert problem
-
IodLambert
public IodLambert(double mu)
Creator with a Lambert solver with default Householder solver parameters.- Parameters:
mu- gravitational constant
-
-
Method Detail
-
estimate
public Orbit estimate(Frame frame, boolean posigrade, int nRev, Position p1, Position p2)
Estimate an initial orbit from two position measurements.The logic for setting
posigradeandnRevis that the sweep angle Δυ travelled by the object betweent1andt2is 2πnRev +1- α ifposigradeis false and 2πnRev+ α ifposigradeis true, where α is the separation angle betweenp1andp2, which is always computed between 0 and π (because in 3D without a normal reference, vector angles cannot go past π).This implies that
posigradeshould be set to true ifp2is located in the half orbit starting atp1and it should be set to false ifp2is located in the half orbit ending atp1, regardless of the number of periods betweent1andt2, andnRevshould be set accordingly.As an example, if
t2is less than half a period aftert1, thenposigradeshould betrueandnRevshould be 0. Ift2is more than half a period aftert1but less than one period aftert1,posigradeshould befalseandnRevshould be 0.- Parameters:
frame- measurements frameposigrade- flag indicating the direction of motionnRev- number of revolutionsp1- first position measurementp2- second position measurement- Returns:
- an initial Keplerian orbit estimation at the first observation date t1
- Since:
- 11.0
-
estimate
public Orbit estimate(Frame frame, boolean posigrade, int nRev, PV pv1, PV pv2)
Estimate an initial orbit from two PV measurements.The logic for setting
posigradeandnRevis that the sweep angle Δυ travelled by the object betweent1andt2is 2πnRev +1- α ifposigradeis false and 2πnRev+ α ifposigradeis true, where α is the separation angle betweenp1andp2, which is always computed between 0 and π (because in 3D without a normal reference, vector angles cannot go past π).This implies that
posigradeshould be set to true ifp2is located in the half orbit starting atp1and it should be set to false ifp2is located in the half orbit ending atp1, regardless of the number of periods betweent1andt2, andnRevshould be set accordingly.As an example, if
t2is less than half a period aftert1, thenposigradeshould betrueandnRevshould be 0. Ift2is more than half a period aftert1but less than one period aftert1,posigradeshould befalseandnRevshould be 0.- Parameters:
frame- measurements frameposigrade- flag indicating the direction of motionnRev- number of revolutionspv1- first PV measurementpv2- second PV measurement- Returns:
- an initial Keplerian orbit estimation at the first observation date t1
- Since:
- 12.0
-
estimate
public Orbit estimate(Frame frame, boolean posigrade, int nRev, Vector3D p1, AbsoluteDate t1, Vector3D p2, AbsoluteDate t2)
Estimate a Keplerian orbit given two position vectors and a duration.The logic for setting
posigradeandnRevis that the sweep angle Δυ travelled by the object betweent1andt2is 2πnRev +1- α ifposigradeis false and 2πnRev+ α ifposigradeis true, where α is the separation angle betweenp1andp2, which is always computed between 0 and π (because in 3D without a normal reference, vector angles cannot go past π).This implies that
posigradeshould be set to true ifp2is located in the half orbit starting atp1and it should be set to false ifp2is located in the half orbit ending atp1, regardless of the number of periods betweent1andt2, andnRevshould be set accordingly.As an example, if
t2is less than half a period aftert1, thenposigradeshould betrueandnRevshould be 0. Ift2is more than half a period aftert1but less than one period aftert1,posigradeshould befalseandnRevshould be 0.- Parameters:
frame- frameposigrade- flag indicating the direction of motionnRev- number of revolutionsp1- position vector 1t1- date of observation 1p2- position vector 2t2- date of observation 2- Returns:
- an initial Keplerian orbit estimate at the first observation date t1
-
-