1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17 package org.orekit.models.earth.tessellation;
18
19 import java.util.ArrayList;
20 import java.util.List;
21
22 import org.hipparchus.util.Pair;
23 import org.orekit.bodies.GeodeticPoint;
24 import org.orekit.bodies.OneAxisEllipsoid;
25 import org.orekit.propagation.SpacecraftState;
26 import org.orekit.propagation.sampling.OrekitFixedStepHandler;
27 import org.orekit.utils.TimeStampedPVCoordinates;
28
29
30
31
32
33
34 class HalfTrackSampler implements OrekitFixedStepHandler {
35
36
37 private final OneAxisEllipsoid ellipsoid;
38
39
40 private final List<Pair<GeodeticPoint, TimeStampedPVCoordinates>> halfTrack;
41
42
43
44
45 HalfTrackSampler(final OneAxisEllipsoid ellipsoid) {
46 this.ellipsoid = ellipsoid;
47 this.halfTrack = new ArrayList<Pair<GeodeticPoint, TimeStampedPVCoordinates>>();
48 }
49
50
51
52
53 public List<Pair<GeodeticPoint, TimeStampedPVCoordinates>> getHalfTrack() {
54 return halfTrack;
55 }
56
57
58 @Override
59 public void handleStep(final SpacecraftState currentState) {
60
61
62 final TimeStampedPVCoordinates pv = currentState.getPVCoordinates(ellipsoid.getBodyFrame());
63 final TimeStampedPVCoordinates groundPV = ellipsoid.projectToGround(pv, ellipsoid.getBodyFrame());
64
65
66 final GeodeticPoint gp =
67 ellipsoid.transform(groundPV.getPosition(), ellipsoid.getBodyFrame(), currentState.getDate());
68
69 halfTrack.add(new Pair<GeodeticPoint, TimeStampedPVCoordinates>(gp, groundPV));
70
71 }
72
73 }