1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17 package org.orekit.rugged.intersection;
18
19 import org.hipparchus.geometry.euclidean.threed.Vector3D;
20 import org.orekit.bodies.GeodeticPoint;
21 import org.orekit.rugged.api.AlgorithmId;
22 import org.orekit.rugged.errors.DumpManager;
23 import org.orekit.rugged.utils.ExtendedEllipsoid;
24 import org.orekit.rugged.utils.NormalizedGeodeticPoint;
25
26
27
28
29
30
31
32
33 public class ConstantElevationAlgorithm implements IntersectionAlgorithm {
34
35
36 private final double constantElevation;
37
38
39
40 private final AlgorithmId algorithmId;
41
42
43
44
45 public ConstantElevationAlgorithm(final double constantElevation) {
46 this.constantElevation = constantElevation;
47 this.algorithmId = AlgorithmId.CONSTANT_ELEVATION_OVER_ELLIPSOID;
48 }
49
50
51 @Override
52 public NormalizedGeodeticPoint intersection(final ExtendedEllipsoid ellipsoid,
53 final Vector3D position, final Vector3D los) {
54 DumpManager.dumpAlgorithm(this.algorithmId, constantElevation);
55 final Vector3D p = ellipsoid.pointAtAltitude(position, los, constantElevation);
56 final GeodeticPoint gp = ellipsoid.transform(p, ellipsoid.getFrame(), null);
57 return new NormalizedGeodeticPoint(gp.getLatitude(), gp.getLongitude(), gp.getAltitude(), 0.0);
58 }
59
60
61 @Override
62 public NormalizedGeodeticPoint refineIntersection(final ExtendedEllipsoid ellipsoid,
63 final Vector3D position, final Vector3D los,
64 final NormalizedGeodeticPoint closeGuess) {
65 DumpManager.dumpAlgorithm(this.algorithmId, constantElevation);
66 final Vector3D p = ellipsoid.pointAtAltitude(position, los, constantElevation);
67 final GeodeticPoint gp = ellipsoid.transform(p, ellipsoid.getFrame(), null);
68 return new NormalizedGeodeticPoint(gp.getLatitude(), gp.getLongitude(), gp.getAltitude(),
69 closeGuess.getLongitude());
70 }
71
72
73
74
75
76
77
78 @Override
79 public double getElevation(final double latitude, final double longitude) {
80 DumpManager.dumpAlgorithm(this.algorithmId, constantElevation);
81 return constantElevation;
82 }
83
84
85 @Override
86 public AlgorithmId getAlgorithmId() {
87 return this.algorithmId;
88 }
89 }