Orekit issueshttps://gitlab.orekit.org/groups/orekit/-/issues2023-11-08T20:28:08Zhttps://gitlab.orekit.org/orekit/orekit/-/issues/1231Bug on buildBox Fix Panel Coefficients2023-11-08T20:28:08ZAlberto FerreroBug on buildBox Fix Panel CoefficientsHi
I found a small bug regarding the FixedPanel call function in the `buildBox` function.
It adds a new panel as
```
panels.add(new FixedPanel(Vector3D.MINUS_I, yLength * zLength, false, absorption, reflection, drag, liftRatio));
```
but...Hi
I found a small bug regarding the FixedPanel call function in the `buildBox` function.
It adds a new panel as
```
panels.add(new FixedPanel(Vector3D.MINUS_I, yLength * zLength, false, absorption, reflection, drag, liftRatio));
```
but the order should be
```
panels.add(new FixedPanel(Vector3D.MINUS_I, yLength * zLength, false, drag, liftRatio, absorption, reflection));
```
as the panel constructor is:
```
public FixedPanel(final Vector3D normal, final double area, final boolean doubleSided,
final double drag, final double liftRatio,
final double absorption, final double reflection)
```
(so basically absorption and reflection are the two last and not the first two)12.0https://gitlab.orekit.org/orekit/orekit/-/issues/1230AberrationModifier should be usable with custom data context2023-12-30T11:46:12ZMaxime JournotAberrationModifier should be usable with custom data context`AberrationModifier` class cannot be used with a custom data context.
All methods using solar system barycenter (SSB) use `DefaultDataContext`.
APIs should be upgraded so that one can use a custom `DataContext` not linked to the defa...`AberrationModifier` class cannot be used with a custom data context.
All methods using solar system barycenter (SSB) use `DefaultDataContext`.
APIs should be upgraded so that one can use a custom `DataContext` not linked to the default one.
TBC, but maybe just putting the SSB as an attribute and adding a constructor taking a generic `DataContext` in input may do the trick.12.0.1Bryan CazabonneBryan Cazabonnehttps://gitlab.orekit.org/orekit/orekit/-/issues/1229Add TrackingCoordinates2023-10-16T12:38:49ZLuc MaisonobeAdd TrackingCoordinatesThe `TopocentricFrame` class provides three independent methods `getElevation`, `getAzimuth` and `getRange` that all recompute a static transform, then apply it to a single point and then extract the result. In many cases, one need sever...The `TopocentricFrame` class provides three independent methods `getElevation`, `getAzimuth` and `getRange` that all recompute a static transform, then apply it to a single point and then extract the result. In many cases, one need several of these values (often site and azimuth together), so some computation are done several times. All these methods should be replaced by a single `getTrackingCoordinates` returning a new `TrackingCoordinates` container holding all three values.12.0Luc MaisonobeLuc Maisonobehttps://gitlab.orekit.org/orekit/orekit/-/issues/1228Add lowestAltitudeIntermediate method to OneAxisEllipsoid2023-10-13T15:00:26ZLuc MaisonobeAdd lowestAltitudeIntermediate method to OneAxisEllipsoidThe lowest altitude point between two endpoints (mainly two satellites) is an important point when computing inter-satellite links.The lowest altitude point between two endpoints (mainly two satellites) is an important point when computing inter-satellite links.12.0Luc MaisonobeLuc Maisonobehttps://gitlab.orekit.org/orekit/orekit/-/issues/1227Add support for CCSDS/SANA geodetic orbital elements.2023-10-10T15:20:59ZLuc MaisonobeAdd support for CCSDS/SANA geodetic orbital elements.The SANA registry defines several types of orbital elements:
https://sanaregistry.org/r/orbital_elements/
Some are supported by Orekit, some are not.
The GEODETIC type should be supported as it allows simple output for plotting ground ...The SANA registry defines several types of orbital elements:
https://sanaregistry.org/r/orbital_elements/
Some are supported by Orekit, some are not.
The GEODETIC type should be supported as it allows simple output for plotting ground tracks.
This must be done in a major version because it implies passing the reference ellipsoid as external data. The CCSDS ODM standard misses this reference ellipsoid (it is probably an error in the standard, it has been notified to CCSDS).12.0Luc MaisonobeLuc Maisonobehttps://gitlab.orekit.org/orekit/orekit/-/issues/1226Constants.SUN_RADIUS does not correspond to IAU resolution B3 from 20152023-10-13T15:00:26ZLuc MaisonobeConstants.SUN_RADIUS does not correspond to IAU resolution B3 from 2015In 2015, IAU published a new standarized value for Sun radius, see [IAU 2015](https://www.iau.org/static/resolutions/IAU2015_English.pdf). This value is 6.957 × 10⁸ m. The value `Constants.SUN_RADIUS` used by Orekit was set in 2010 and i...In 2015, IAU published a new standarized value for Sun radius, see [IAU 2015](https://www.iau.org/static/resolutions/IAU2015_English.pdf). This value is 6.957 × 10⁸ m. The value `Constants.SUN_RADIUS` used by Orekit was set in 2010 and is 6.955 × 10⁸ m, we did not find where we sourced this value from.
It also appears that many tests in Orekit use a hard-coded value of 696000km, which corresponds to the ASUN constant in JPL DE ephemeris files.
The value should be standardized to the IAU resolution.12.0Luc MaisonobeLuc Maisonobehttps://gitlab.orekit.org/orekit/orekit/-/issues/1225Adding missing `FieldLongitudeCrossingDetector`2023-11-08T20:28:10ZAlberto FerreroAdding missing `FieldLongitudeCrossingDetector`As discussed here:
The `FieldLongitudeCrossingDetector` is missing.
Just adding itAs discussed here:
The `FieldLongitudeCrossingDetector` is missing.
Just adding it12.0Alberto FerreroAlberto Ferrerohttps://gitlab.orekit.org/orekit/orekit/-/issues/1224NaN appearing in OneAxisEllipsoid for points near Earth center2023-10-09T14:50:16ZLuc MaisonobeNaN appearing in OneAxisEllipsoid for points near Earth centerWhen computing inter-satellites view of two GNSS satellites almost opposite to each other
(and hence which should never see each other), one intermediate point is evaluated close to Earth center.
It generates a NaN.
Here is a small examp...When computing inter-satellites view of two GNSS satellites almost opposite to each other
(and hence which should never see each other), one intermediate point is evaluated close to Earth center.
It generates a NaN.
Here is a small example:
```java
@Test
public void testPointNearCenter() {
final OneAxisEllipsoid earth = new OneAxisEllipsoid(Constants.WGS84_EARTH_EQUATORIAL_RADIUS,
Constants.WGS84_EARTH_FLATTENING,
FramesFactory.getITRF(IERSConventions.IERS_2010, false));
final Vector3D p1 = new Vector3D( 14605530.402633, 7681001.886684, 24582223.005261);
final Vector3D p2 = new Vector3D(-14650836.411867, -7561887.405778, -24575352.170908);
final Vector3D pMid = new Vector3D(0.5, p1, 0.5, p2);
System.out.println(earth.transform(pMid, earth.getFrame(), null));
}
```
The reason is that convergence is not reached in Toshio Fukushima's algorithm and phi is still set to `Double.POSITIVE_INFINITY` when the loop exceeds its max count. The example above would need 137 iterations to converge
An even worst point is `new Vector3D(-20923.23737959098, 56464.586571323685, -7647.317096056417)`, which needs 1150 iterations to converge.12.0Luc MaisonobeLuc Maisonobehttps://gitlab.orekit.org/orekit/orekit/-/issues/1223Add wind-up effect for inter-satellites phase measurements2023-10-07T20:16:33ZLuc MaisonobeAdd wind-up effect for inter-satellites phase measurementsWind-up effect should be considered for inter-satellites phase measurements.Wind-up effect should be considered for inter-satellites phase measurements.12.0Luc MaisonobeLuc Maisonobehttps://gitlab.orekit.org/orekit/orekit/-/issues/1222InterSatDirectViewDetector should take a minimum skimming altitude into account2023-10-07T20:16:33ZLuc MaisonobeInterSatDirectViewDetector should take a minimum skimming altitude into account`InterSatDirectViewDetector` detects when the line between two satellites is blocked by central body limb.
This is not always relevant as a path passing through atmosphere may be unusable.
The detector should provide a minimum skimming a...`InterSatDirectViewDetector` detects when the line between two satellites is blocked by central body limb.
This is not always relevant as a path passing through atmosphere may be unusable.
The detector should provide a minimum skimming altitude and detect events only when the full path is above this altitude.
Setting the minimum skimming altitude to 0.0 reproduces the current behaviour.12.0Luc MaisonobeLuc Maisonobehttps://gitlab.orekit.org/orekit/orekit/-/issues/1221step interpolators should be useable for providing coordinates directly.2023-10-07T20:16:32ZLuc Maisonobestep interpolators should be useable for providing coordinates directly.{Field}OrekitStepInterpolator interface should extend {Field}PVCoordinatesProvider as this would simplify using them for local interpolation, typically in attitude providers or measurements generators.{Field}OrekitStepInterpolator interface should extend {Field}PVCoordinatesProvider as this would simplify using them for local interpolation, typically in attitude providers or measurements generators.12.0Luc MaisonobeLuc Maisonobehttps://gitlab.orekit.org/orekit/orekit/-/issues/1220Build measurements from OrekitStepInterpolator instead of SpacecraftState2023-10-07T20:16:33ZLuc MaisonobeBuild measurements from OrekitStepInterpolator instead of SpacecraftStateIn order to solve #1219, we need to be able to provide the remote satellite as a `PVCoordinatesProvider` instead of a simple `SpacecraftState`.
Some [discussions](https://forum.orekit.org/t/orbit-determination-for-interplanetary-missions...In order to solve #1219, we need to be able to provide the remote satellite as a `PVCoordinatesProvider` instead of a simple `SpacecraftState`.
Some [discussions](https://forum.orekit.org/t/orbit-determination-for-interplanetary-missions/2905) on the forum also reference need for providing measurements with capabilities to go further than simple `shiftedBy` interpolation.12.0Luc MaisonobeLuc Maisonobehttps://gitlab.orekit.org/orekit/orekit/-/issues/1219missing builders for OneWayGNSSPhase and OneWayGNSSRange2023-10-07T20:16:33ZLuc Maisonobemissing builders for OneWayGNSSPhase and OneWayGNSSRangeOneWayGNSSPhase and OneWayGNSSRange measurements do not have any builder.OneWayGNSSPhase and OneWayGNSSRange measurements do not have any builder.12.0Luc MaisonobeLuc Maisonobehttps://gitlab.orekit.org/orekit/orekit/-/issues/1217Add getter for resetAtEnd in (Field) AbstractIntegratedPropagator2023-10-26T15:46:28ZRomain SerraAdd getter for resetAtEnd in (Field) AbstractIntegratedPropagator12.0Romain SerraRomain Serrahttps://gitlab.orekit.org/orekit/orekit/-/issues/1216Angular based initial orbit determination shall also work with AzEl2023-10-01T13:13:10ZBryan CazabonneAngular based initial orbit determination shall also work with AzElBecause angluar-based initial orbit determination (IOD) algorithm works with RaDec measurement, it is interesting to also add support for AzEl measurementBecause angluar-based initial orbit determination (IOD) algorithm works with RaDec measurement, it is interesting to also add support for AzEl measurement12.0Bryan CazabonneBryan Cazabonnehttps://gitlab.orekit.org/orekit/orekit/-/issues/1215New coordinates (Latitude/Longitude) range crossing detectors2024-02-16T08:30:01ZAlberto FerreroNew coordinates (Latitude/Longitude) range crossing detectorsI would like to propose to merge 2 new detectors: `LongitudeRangeCrossingDetector` and `LatitudeRangeCrossingDetector` as per discussion in: https://forum.orekit.org/t/latitude-and-longitude-crossing-detector/2908
AlbertoI would like to propose to merge 2 new detectors: `LongitudeRangeCrossingDetector` and `LatitudeRangeCrossingDetector` as per discussion in: https://forum.orekit.org/t/latitude-and-longitude-crossing-detector/2908
Alberto12.1Alberto FerreroAlberto Ferrerohttps://gitlab.orekit.org/orekit/orekit/-/issues/1214Enable choice of cached PositionAngleType w/ applicable Orbit2024-02-09T23:09:51ZRomain SerraEnable choice of cached PositionAngleType w/ applicable Orbit`PositionAngleType`-based Orbit's constructors systematically convert the input into TRUE. This is an unnecessary computation and it is suitable to be able to choose the cached type`PositionAngleType`-based Orbit's constructors systematically convert the input into TRUE. This is an unnecessary computation and it is suitable to be able to choose the cached type12.1Romain SerraRomain Serrahttps://gitlab.orekit.org/orekit/orekit/-/issues/1213Decrease code duplication in (Field)SpacecraftState by using isOrbitDefined more2023-11-08T20:28:10ZRomain SerraDecrease code duplication in (Field)SpacecraftState by using isOrbitDefined moreAll the `absPva == null` can be replaced by `isOrbitDefined()`All the `absPva == null` can be replaced by `isOrbitDefined()`12.0Tanner MillsTanner Millshttps://gitlab.orekit.org/orekit/orekit/-/issues/1212GIM model doesn't use ionospheric pierce point2023-11-08T20:28:09ZAustin BeerGIM model doesn't use ionospheric pierce pointFrom what I can tell, the formulas in https://www.sgc.ethz.ch/sgc-volumes/sgk-59.pdf are used in https://gitlab.orekit.org/orekit/orekit/-/blob/0b108c1d05fb2a3be8bddb17e85e1d38d6902a5b/src/main/java/org/orekit/models/earth/ionosphere/Glo...From what I can tell, the formulas in https://www.sgc.ethz.ch/sgc-volumes/sgk-59.pdf are used in https://gitlab.orekit.org/orekit/orekit/-/blob/0b108c1d05fb2a3be8bddb17e85e1d38d6902a5b/src/main/java/org/orekit/models/earth/ionosphere/GlobalIonosphereMapModel.java to calculate the STEC value.
However, the VTEC value that's used to calculate the STEC value is currently interpolated at the **receiver/station** location instead of at the **ionospheric pierce point** location. See Figure 3.5 in https://www.sgc.ethz.ch/sgc-volumes/sgk-59.pdf. I believe this difference may negatively affect the accuracy of the resulting path delay calculations.
Note that equation (3) in https://upcommons.upc.edu/bitstream/handle/2117/361016/remotesensing-13-00012-v2.pdf also indicates that the STEC at the receiver site (x_R) should be calculated from the VTEC at the ionospheric pierce point (x_IPP).
Note also that https://gitlab.orekit.org/orekit/orekit/-/blob/0b108c1d05fb2a3be8bddb17e85e1d38d6902a5b/src/main/java/org/orekit/models/earth/ionosphere/KlobucharIonoModel.java#L144 **does** use the ionospheric pierce point in its calculations.12.0Luc MaisonobeLuc Maisonobehttps://gitlab.orekit.org/orekit/orekit/-/issues/1211Add method to produce angle-based (Field)Orbit instance without derivatives2023-10-26T15:45:27ZRomain SerraAdd method to produce angle-based (Field)Orbit instance without derivativesThe presence of derivatives in `EquinoctialOrbit` and the like can produce computational overhead when computing `PVCoordinates` in `shiftedBy` for example, which is not always suitable.The presence of derivatives in `EquinoctialOrbit` and the like can produce computational overhead when computing `PVCoordinates` in `shiftedBy` for example, which is not always suitable.12.0Romain SerraRomain Serra