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. References: Battin, R.H., An Introduction to the Mathematics and Methods of Astrodynamics, AIAA Education, 1999. Lancaster, E.R. and Blanchard, R.C., A Unified Form of Lambert’s Theorem, Goddard Space Flight Center, 1968.
- Since:
- 8.0
- Author:
- Joris Olympio
-
-
Constructor Summary
Constructors Constructor Description IodLambert(double mu)
Creator.
-
Method Summary
All Methods Instance Methods Concrete Methods Modifier and Type Method Description 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.Orbit
estimate(Frame frame, boolean posigrade, int nRev, Position p1, Position p2)
Estimate an initial orbit from two position measurements.Orbit
estimate(Frame frame, boolean posigrade, int nRev, PV pv1, PV pv2)
Estimate an initial orbit from two PV measurements.
-
-
-
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
posigrade
andnRev
is that the sweep angle Δυ travelled by the object betweent1
andt2
is 2πnRev +1
- α ifposigrade
is false and 2πnRev
+ α ifposigrade
is true, where α is the separation angle betweenp1
andp2
, which is always computed between 0 and π (because in 3D without a normal reference, vector angles cannot go past π).This implies that
posigrade
should be set to true ifp2
is located in the half orbit starting atp1
and it should be set to false ifp2
is located in the half orbit ending atp1
, regardless of the number of periods betweent1
andt2
, andnRev
should be set accordingly.As an example, if
t2
is less than half a period aftert1
, thenposigrade
should betrue
andnRev
should be 0. Ift2
is more than half a period aftert1
but less than one period aftert1
,posigrade
should befalse
andnRev
should 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
posigrade
andnRev
is that the sweep angle Δυ travelled by the object betweent1
andt2
is 2πnRev +1
- α ifposigrade
is false and 2πnRev
+ α ifposigrade
is true, where α is the separation angle betweenp1
andp2
, which is always computed between 0 and π (because in 3D without a normal reference, vector angles cannot go past π).This implies that
posigrade
should be set to true ifp2
is located in the half orbit starting atp1
and it should be set to false ifp2
is located in the half orbit ending atp1
, regardless of the number of periods betweent1
andt2
, andnRev
should be set accordingly.As an example, if
t2
is less than half a period aftert1
, thenposigrade
should betrue
andnRev
should be 0. Ift2
is more than half a period aftert1
but less than one period aftert1
,posigrade
should befalse
andnRev
should 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
posigrade
andnRev
is that the sweep angle Δυ travelled by the object betweent1
andt2
is 2πnRev +1
- α ifposigrade
is false and 2πnRev
+ α ifposigrade
is true, where α is the separation angle betweenp1
andp2
, which is always computed between 0 and π (because in 3D without a normal reference, vector angles cannot go past π).This implies that
posigrade
should be set to true ifp2
is located in the half orbit starting atp1
and it should be set to false ifp2
is located in the half orbit ending atp1
, regardless of the number of periods betweent1
andt2
, andnRev
should be set accordingly.As an example, if
t2
is less than half a period aftert1
, thenposigrade
should betrue
andnRev
should be 0. Ift2
is more than half a period aftert1
but less than one period aftert1
,posigrade
should befalse
andnRev
should 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
-
-