1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18 package org.orekit.files.ccsds.ndm.adm.acm;
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 import org.orekit.utils.units.Unit;
27
28
29
30
31
32 class AttitudePhysicalPropertiesWriter extends AbstractWriter {
33
34
35 private final AttitudePhysicalProperties phys;
36
37
38
39
40 AttitudePhysicalPropertiesWriter(final AttitudePhysicalProperties phys) {
41 super(AcmDataSubStructureKey.phys.name(), AcmDataSubStructureKey.PHYS.name());
42 this.phys = phys;
43 }
44
45
46 @Override
47 protected void writeContent(final Generator generator) throws IOException {
48
49
50 generator.writeComments(phys.getComments());
51
52
53 generator.writeEntry(AttitudePhysicalPropertiesKey.DRAG_COEFF.name(), phys.getDragCoefficient(), Unit.ONE, false);
54
55
56 generator.writeEntry(AttitudePhysicalPropertiesKey.WET_MASS.name(), phys.getWetMass(), Unit.KILOGRAM, false);
57 generator.writeEntry(AttitudePhysicalPropertiesKey.DRY_MASS.name(), phys.getDryMass(), Unit.KILOGRAM, false);
58
59
60 if (phys.getCenterOfPressureReferenceFrame() != null) {
61 generator.writeEntry(AttitudePhysicalPropertiesKey.CP_REF_FRAME.name(), phys.getCenterOfPressureReferenceFrame().getName(), null, false);
62 }
63 if (phys.getCenterOfPressure() != null) {
64 final StringBuilder cp = new StringBuilder();
65 cp.append(generator.doubleToString(Unit.METRE.fromSI(phys.getCenterOfPressure().getX())));
66 cp.append(' ');
67 cp.append(generator.doubleToString(Unit.METRE.fromSI(phys.getCenterOfPressure().getY())));
68 cp.append(' ');
69 cp.append(generator.doubleToString(Unit.METRE.fromSI(phys.getCenterOfPressure().getZ())));
70 generator.writeEntry(AttitudePhysicalPropertiesKey.CP.name(), cp.toString(), Unit.METRE, false);
71 }
72
73
74 if (phys.getInertiaReferenceFrame() != null) {
75 generator.writeEntry(AttitudePhysicalPropertiesKey.INERTIA_REF_FRAME.name(), phys.getInertiaReferenceFrame().getName(), null, false);
76 }
77 final RealMatrix inertia = phys.getInertiaMatrix();
78 if (inertia != null) {
79 generator.writeEntry(AttitudePhysicalPropertiesKey.IXX.name(), inertia.getEntry(0, 0), Units.KG_M2, true);
80 generator.writeEntry(AttitudePhysicalPropertiesKey.IYY.name(), inertia.getEntry(1, 1), Units.KG_M2, true);
81 generator.writeEntry(AttitudePhysicalPropertiesKey.IZZ.name(), inertia.getEntry(2, 2), Units.KG_M2, true);
82 generator.writeEntry(AttitudePhysicalPropertiesKey.IXY.name(), inertia.getEntry(0, 1), Units.KG_M2, true);
83 generator.writeEntry(AttitudePhysicalPropertiesKey.IXZ.name(), inertia.getEntry(0, 2), Units.KG_M2, true);
84 generator.writeEntry(AttitudePhysicalPropertiesKey.IYZ.name(), inertia.getEntry(1, 2), Units.KG_M2, true);
85 }
86
87 }
88
89 }