1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17 package org.orekit.models.earth;
18
19 import java.io.Serializable;
20 import java.text.DecimalFormat;
21 import java.text.NumberFormat;
22
23 import org.hipparchus.geometry.euclidean.threed.Vector3D;
24 import org.hipparchus.util.FastMath;
25 import org.orekit.utils.units.UnitsConverter;
26
27
28
29
30 public class GeoMagneticElements implements Serializable {
31
32
33 private static final long serialVersionUID = 1881493738280586855L;
34
35
36 private Vector3D b;
37
38
39 private double inclination;
40
41
42 private double declination;
43
44
45 private double totalIntensity;
46
47
48 private double horizontalIntensity;
49
50
51
52
53
54 public GeoMagneticElements(final Vector3D b) {
55 this.b = new Vector3D(UnitsConverter.NANO_TESLAS_TO_TESLAS.getFrom().getScale(), b);
56
57 final double intensityNanoTesla = FastMath.hypot(b.getX(), b.getY());
58 horizontalIntensity = UnitsConverter.NANO_TESLAS_TO_TESLAS.convert(intensityNanoTesla);
59 totalIntensity = UnitsConverter.NANO_TESLAS_TO_TESLAS.convert(b.getNorm());
60 declination = FastMath.atan2(b.getY(), b.getX());
61 inclination = FastMath.atan2(b.getZ(), intensityNanoTesla);
62 }
63
64
65
66
67 public Vector3D getFieldVector() {
68 return b;
69 }
70
71
72
73
74 public double getInclination() {
75 return inclination;
76 }
77
78
79
80
81 public double getDeclination() {
82 return declination;
83 }
84
85
86
87
88 public double getTotalIntensity() {
89 return totalIntensity;
90 }
91
92
93
94
95
96 public double getHorizontalIntensity() {
97 return horizontalIntensity;
98 }
99
100 @Override
101 public String toString() {
102 final NumberFormat f = NumberFormat.getInstance();
103 final DecimalFormat d = new DecimalFormat("0.######E0");
104 final StringBuilder sb = new StringBuilder();
105 sb.append("MagneticField[");
106 sb.append("B=");
107 sb.append(b.toString(d));
108 sb.append(",H=");
109 sb.append(d.format(getHorizontalIntensity()));
110 sb.append(",F=");
111 sb.append(d.format(getTotalIntensity()));
112 sb.append(",I=");
113 sb.append(f.format(getInclination()));
114 sb.append(",D=");
115 sb.append(f.format(getDeclination()));
116 sb.append("]");
117 return sb.toString();
118 }
119 }