1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18 package org.orekit.files.ccsds.ndm.odm;
19
20 import java.io.IOException;
21
22 import org.orekit.files.ccsds.definitions.TimeConverter;
23 import org.orekit.files.ccsds.definitions.Units;
24 import org.orekit.files.ccsds.section.AbstractWriter;
25 import org.orekit.files.ccsds.utils.generation.Generator;
26 import org.orekit.utils.TimeStampedPVCoordinates;
27 import org.orekit.utils.units.Unit;
28
29
30
31
32
33 public class StateVectorWriter extends AbstractWriter {
34
35
36 private final StateVector stateVector;
37
38
39 private final TimeConverter timeConverter;
40
41
42
43
44
45
46
47 public StateVectorWriter(final String xmlTag, final String kvnTag,
48 final StateVector stateVector, final TimeConverter timeConverter) {
49 super(xmlTag, kvnTag);
50 this.stateVector = stateVector;
51 this.timeConverter = timeConverter;
52 }
53
54
55 @Override
56 protected void writeContent(final Generator generator) throws IOException {
57
58
59 final TimeStampedPVCoordinates pv = stateVector.toTimeStampedPVCoordinates();
60 generator.writeComments(stateVector.getComments());
61 generator.writeEntry(StateVectorKey.EPOCH.name(), timeConverter, pv.getDate(), true, true);
62 generator.writeEntry(StateVectorKey.X.name(), pv.getPosition().getX(), Unit.KILOMETRE, true);
63 generator.writeEntry(StateVectorKey.Y.name(), pv.getPosition().getY(), Unit.KILOMETRE, true);
64 generator.writeEntry(StateVectorKey.Z.name(), pv.getPosition().getZ(), Unit.KILOMETRE, true);
65 generator.writeEntry(StateVectorKey.X_DOT.name(), pv.getVelocity().getX(), Units.KM_PER_S, true);
66 generator.writeEntry(StateVectorKey.Y_DOT.name(), pv.getVelocity().getY(), Units.KM_PER_S, true);
67 generator.writeEntry(StateVectorKey.Z_DOT.name(), pv.getVelocity().getZ(), Units.KM_PER_S, true);
68
69
70 }
71
72 }