public class IodLambert extends Object
Constructor and Description |
---|
IodLambert(double mu)
Creator.
|
Modifier and Type | Method and Description |
---|---|
KeplerianOrbit |
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.
|
public IodLambert(double mu)
mu
- gravitational constantpublic KeplerianOrbit estimate(Frame frame, boolean posigrade, int nRev, Vector3D p1, AbsoluteDate t1, Vector3D p2, AbsoluteDate t2)
The logic for setting posigrade
and nRev
is that the
sweep angle Δυ travelled by the object between t1
and t2
is
2π nRev +1
- α if posigrade
is false and 2π nRev
+ α
if posigrade
is true, where α is the separation angle between
p1
and p2
, 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 if p2
is
located in the half orbit starting at p1
and it should be set to
false if p2
is located in the half orbit ending at p1
,
regardless of the number of periods between t1
and t2
,
and nRev
should be set accordingly.
As an example, if t2
is less than half a period after t1
,
then posigrade
should be true
and nRev
should be 0.
If t2
is more than half a period after t1
but less than
one period after t1
, posigrade
should be false
and
nRev
should be 0.
frame
- frameposigrade
- flag indicating the direction of motionnRev
- number of revolutionsp1
- position vector 1t1
- date of observation 1p2
- position vector 2t2
- date of observation 2Copyright © 2002-2020 CS Group. All rights reserved.