use of org.hipparchus.stat.descriptive.rank.Min in project Orekit by CS-SI.
the class FieldKeplerianPropagatorTest method testTuple.
@Test
public void testTuple() throws OrekitException {
AbsoluteDate initDate = AbsoluteDate.J2000_EPOCH.shiftedBy(584.);
KeplerianOrbit k0 = new KeplerianOrbit(7209668.0, 0.5e-4, 1.7, 2.1, 2.9, 6.2, PositionAngle.TRUE, FramesFactory.getEME2000(), initDate, mu);
TimeStampedPVCoordinates pv0 = k0.getPVCoordinates();
TimeStampedPVCoordinates pv1 = new TimeStampedPVCoordinates(pv0.getDate(), pv0.getPosition(), pv0.getVelocity().add(new Vector3D(2.0, pv0.getVelocity().normalize())));
KeplerianOrbit k1 = new KeplerianOrbit(pv1, k0.getFrame(), k0.getMu());
FieldOrbit<Tuple> twoOrbits = new FieldKeplerianOrbit<>(new Tuple(k0.getA(), k1.getA()), new Tuple(k0.getE(), k1.getE()), new Tuple(k0.getI(), k1.getI()), new Tuple(k0.getPerigeeArgument(), k1.getPerigeeArgument()), new Tuple(k0.getRightAscensionOfAscendingNode(), k1.getRightAscensionOfAscendingNode()), new Tuple(k0.getMeanAnomaly(), k1.getMeanAnomaly()), PositionAngle.MEAN, FramesFactory.getEME2000(), new FieldAbsoluteDate<>(initDate, new Tuple(0.0, 0.0)), mu);
Field<Tuple> field = twoOrbits.getDate().getField();
FieldPropagator<Tuple> propagator = new FieldKeplerianPropagator<>(twoOrbits);
Min minTangential = new Min();
Max maxTangential = new Max();
Min minRadial = new Min();
Max maxRadial = new Max();
propagator.setMasterMode(field.getZero().add(10.0), (s, isLast) -> {
FieldVector3D<Tuple> p = s.getPVCoordinates().getPosition();
FieldVector3D<Tuple> v = s.getPVCoordinates().getVelocity();
Vector3D p0 = new Vector3D(p.getX().getComponent(0), p.getY().getComponent(0), p.getZ().getComponent(0));
Vector3D v0 = new Vector3D(v.getX().getComponent(0), v.getY().getComponent(0), v.getZ().getComponent(0));
Vector3D t = v0.normalize();
Vector3D r = Vector3D.crossProduct(v0, Vector3D.crossProduct(p0, v0)).normalize();
Vector3D p1 = new Vector3D(p.getX().getComponent(1), p.getY().getComponent(1), p.getZ().getComponent(1));
double dT = Vector3D.dotProduct(p1.subtract(p0), t);
double dR = Vector3D.dotProduct(p1.subtract(p0), r);
minTangential.increment(dT);
maxTangential.increment(dT);
minRadial.increment(dR);
maxRadial.increment(dR);
});
propagator.propagate(twoOrbits.getDate().shiftedBy(Constants.JULIAN_DAY / 8));
Assert.assertEquals(-72525.685, minTangential.getResult(), 1.0e-3);
Assert.assertEquals(926.046, maxTangential.getResult(), 1.0e-3);
Assert.assertEquals(-92.800, minRadial.getResult(), 1.0e-3);
Assert.assertEquals(7739.532, maxRadial.getResult(), 1.0e-3);
}
Aggregations