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.hipparchus.linear.RealMatrix;
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
27
28
29
30
31 public class CartesianCovarianceWriter extends AbstractWriter {
32
33
34 private final CartesianCovariance covariance;
35
36
37
38
39
40
41 public CartesianCovarianceWriter(final String xmlTag, final String kvnTag,
42 final CartesianCovariance covariance) {
43 super(xmlTag, kvnTag);
44 this.covariance = covariance;
45 }
46
47
48 @Override
49 protected void writeContent(final Generator generator) throws IOException {
50
51 final RealMatrix matrix = covariance.getCovarianceMatrix();
52
53
54 generator.writeComments(covariance.getComments());
55
56 generator.writeEntry(CartesianCovarianceKey.COV_REF_FRAME.name(), covariance.getReferenceFrame().getName(), null, false);
57 generator.writeEntry(CartesianCovarianceKey.CX_X.name(), matrix.getEntry(0, 0), Units.KM2, true);
58 generator.writeEntry(CartesianCovarianceKey.CY_X.name(), matrix.getEntry(1, 0), Units.KM2, true);
59 generator.writeEntry(CartesianCovarianceKey.CY_Y.name(), matrix.getEntry(1, 1), Units.KM2, true);
60 generator.writeEntry(CartesianCovarianceKey.CZ_X.name(), matrix.getEntry(2, 0), Units.KM2, true);
61 generator.writeEntry(CartesianCovarianceKey.CZ_Y.name(), matrix.getEntry(2, 1), Units.KM2, true);
62 generator.writeEntry(CartesianCovarianceKey.CZ_Z.name(), matrix.getEntry(2, 2), Units.KM2, true);
63 generator.writeEntry(CartesianCovarianceKey.CX_DOT_X.name(), matrix.getEntry(3, 0), Units.KM2_PER_S, true);
64 generator.writeEntry(CartesianCovarianceKey.CX_DOT_Y.name(), matrix.getEntry(3, 1), Units.KM2_PER_S, true);
65 generator.writeEntry(CartesianCovarianceKey.CX_DOT_Z.name(), matrix.getEntry(3, 2), Units.KM2_PER_S, true);
66 generator.writeEntry(CartesianCovarianceKey.CX_DOT_X_DOT.name(), matrix.getEntry(3, 3), Units.KM2_PER_S2, true);
67 generator.writeEntry(CartesianCovarianceKey.CY_DOT_X.name(), matrix.getEntry(4, 0), Units.KM2_PER_S, true);
68 generator.writeEntry(CartesianCovarianceKey.CY_DOT_Y.name(), matrix.getEntry(4, 1), Units.KM2_PER_S, true);
69 generator.writeEntry(CartesianCovarianceKey.CY_DOT_Z.name(), matrix.getEntry(4, 2), Units.KM2_PER_S, true);
70 generator.writeEntry(CartesianCovarianceKey.CY_DOT_X_DOT.name(), matrix.getEntry(4, 3), Units.KM2_PER_S2, true);
71 generator.writeEntry(CartesianCovarianceKey.CY_DOT_Y_DOT.name(), matrix.getEntry(4, 4), Units.KM2_PER_S2, true);
72 generator.writeEntry(CartesianCovarianceKey.CZ_DOT_X.name(), matrix.getEntry(5, 0), Units.KM2_PER_S, true);
73 generator.writeEntry(CartesianCovarianceKey.CZ_DOT_Y.name(), matrix.getEntry(5, 1), Units.KM2_PER_S, true);
74 generator.writeEntry(CartesianCovarianceKey.CZ_DOT_Z.name(), matrix.getEntry(5, 2), Units.KM2_PER_S, true);
75 generator.writeEntry(CartesianCovarianceKey.CZ_DOT_X_DOT.name(), matrix.getEntry(5, 3), Units.KM2_PER_S2, true);
76 generator.writeEntry(CartesianCovarianceKey.CZ_DOT_Y_DOT.name(), matrix.getEntry(5, 4), Units.KM2_PER_S2, true);
77 generator.writeEntry(CartesianCovarianceKey.CZ_DOT_Z_DOT.name(), matrix.getEntry(5, 5), Units.KM2_PER_S2, true);
78
79 }
80
81 }