Skip to content
Snippets Groups Projects
Commit fad54278 authored by Bryan Cazabonne's avatar Bryan Cazabonne Committed by Luc Maisonobe
Browse files

Fixed angle normalization issue.

parent 65be1a8f
Branches
No related tags found
No related merge requests found
...@@ -24,6 +24,8 @@ import java.text.ParseException; ...@@ -24,6 +24,8 @@ import java.text.ParseException;
import java.util.ArrayList; import java.util.ArrayList;
import org.hipparchus.analysis.interpolation.BilinearInterpolatingFunction; import org.hipparchus.analysis.interpolation.BilinearInterpolatingFunction;
import org.hipparchus.util.FastMath;
import org.hipparchus.util.MathUtils;
import org.orekit.data.DataLoader; import org.orekit.data.DataLoader;
import org.orekit.data.DataProvidersManager; import org.orekit.data.DataProvidersManager;
import org.orekit.errors.OrekitException; import org.orekit.errors.OrekitException;
...@@ -109,9 +111,12 @@ public class ViennaModelCoefficientsLoader implements DataLoader { ...@@ -109,9 +111,12 @@ public class ViennaModelCoefficientsLoader implements DataLoader {
this.coefficientsA = null; this.coefficientsA = null;
this.zenithDelay = null; this.zenithDelay = null;
this.supportedNames = supportedNames; this.supportedNames = supportedNames;
this.latitude = latitude;
this.longitude = longitude;
this.type = type; this.type = type;
this.latitude = latitude;
// Normalize longitude between 0° and 360°
final double lon = MathUtils.normalizeAngle(FastMath.toRadians(longitude), FastMath.PI);
this.longitude = FastMath.toDegrees(lon);
} }
/** Constructor with default supported names. /** Constructor with default supported names.
......
...@@ -25,6 +25,8 @@ import org.orekit.time.DateTimeComponents; ...@@ -25,6 +25,8 @@ import org.orekit.time.DateTimeComponents;
public class ViennaModelCoefficientsLoaderTest { public class ViennaModelCoefficientsLoaderTest {
private static double epsilon = 1.0e-16;
@Test @Test
/** /**
* Regular test for 19th of November 2018 with Vienna 1 model * Regular test for 19th of November 2018 with Vienna 1 model
...@@ -43,11 +45,11 @@ public class ViennaModelCoefficientsLoaderTest { ...@@ -43,11 +45,11 @@ public class ViennaModelCoefficientsLoaderTest {
final double a[] = tropoLoader.getA(); final double a[] = tropoLoader.getA();
final double delays[] = tropoLoader.getZenithDelay(); final double delays[] = tropoLoader.getZenithDelay();
Assert.assertEquals(0.00127935, a[0], 1e-16); Assert.assertEquals(0.00127935, a[0], epsilon);
Assert.assertEquals(0.00064084, a[1], 1e-16); Assert.assertEquals(0.00064084, a[1], epsilon);
Assert.assertEquals(2.3131, delays[0], 1e-16); Assert.assertEquals(2.3131, delays[0], epsilon);
Assert.assertEquals(0.3086, delays[1], 1e-16); Assert.assertEquals(0.3086, delays[1], epsilon);
} }
@Test @Test
...@@ -68,11 +70,11 @@ public class ViennaModelCoefficientsLoaderTest { ...@@ -68,11 +70,11 @@ public class ViennaModelCoefficientsLoaderTest {
final double a[] = tropoLoader.getA(); final double a[] = tropoLoader.getA();
final double delays[] = tropoLoader.getZenithDelay(); final double delays[] = tropoLoader.getZenithDelay();
Assert.assertEquals(0.00117002, a[0], 1e-16); Assert.assertEquals(0.00117002, a[0], epsilon);
Assert.assertEquals(0.00045484, a[1], 1e-16); Assert.assertEquals(0.00045484, a[1], epsilon);
Assert.assertEquals(2.3203, delays[0], 1e-16); Assert.assertEquals(2.3203, delays[0], epsilon);
Assert.assertEquals(0.0191, delays[1], 1e-16); Assert.assertEquals(0.0191, delays[1], epsilon);
} }
@Test @Test
...@@ -93,11 +95,72 @@ public class ViennaModelCoefficientsLoaderTest { ...@@ -93,11 +95,72 @@ public class ViennaModelCoefficientsLoaderTest {
final double a[] = tropoLoader.getA(); final double a[] = tropoLoader.getA();
final double delays[] = tropoLoader.getZenithDelay(); final double delays[] = tropoLoader.getZenithDelay();
Assert.assertEquals(0.00127606, a[0], 1e-16); Assert.assertEquals(0.00127606, a[0], epsilon);
Assert.assertEquals(0.00056388, a[1], 1e-16); Assert.assertEquals(0.00056388, a[1], epsilon);
Assert.assertEquals(2.3117, delays[0], 1e-16); Assert.assertEquals(2.3117, delays[0], epsilon);
Assert.assertEquals(0.2239, delays[1], 1e-16); Assert.assertEquals(0.2239, delays[1], epsilon);
}
@Test
public void testEquality() {
// Commons parameters
Utils.setDataRoot("vmf3-1x1-tropospheric-coefficients");
DateTimeComponents dateTimeComponents = new DateTimeComponents(2018, 11, 25, 0, 0, 0.0);
final double latitude = 45.0;
double longitude1;
ViennaModelCoefficientsLoader model1;
double longitude2;
ViennaModelCoefficientsLoader model2;
// Test longitude = 181° and longitude = -179°
longitude1 = 181.0;
longitude2 = -179.0;
model1 = new ViennaModelCoefficientsLoader(latitude, longitude1, ViennaModelType.VIENNA_THREE);
model2 = new ViennaModelCoefficientsLoader(latitude, longitude2, ViennaModelType.VIENNA_THREE);
model1.loadViennaCoefficients(dateTimeComponents);
model2.loadViennaCoefficients(dateTimeComponents);
Assert.assertEquals(model1.getA()[0], model2.getA()[0], epsilon);
Assert.assertEquals(model1.getA()[1], model2.getA()[1], epsilon);
Assert.assertEquals(model1.getZenithDelay()[0], model2.getZenithDelay()[0], epsilon);
Assert.assertEquals(model1.getZenithDelay()[1], model2.getZenithDelay()[1], epsilon);
// Test longitude = 180° and longitude = -180°
longitude1 = 180.0;
longitude2 = -180.0;
model1 = new ViennaModelCoefficientsLoader(latitude, longitude1, ViennaModelType.VIENNA_THREE);
model2 = new ViennaModelCoefficientsLoader(latitude, longitude2, ViennaModelType.VIENNA_THREE);
model1.loadViennaCoefficients(dateTimeComponents);
model2.loadViennaCoefficients(dateTimeComponents);
Assert.assertEquals(model1.getA()[0], model2.getA()[0], epsilon);
Assert.assertEquals(model1.getA()[1], model2.getA()[1], epsilon);
Assert.assertEquals(model1.getZenithDelay()[0], model2.getZenithDelay()[0], epsilon);
Assert.assertEquals(model1.getZenithDelay()[1], model2.getZenithDelay()[1], epsilon);
// Test longitude = 0° and longitude = 360°
longitude1 = 0.0;
longitude2 = 360.0;
model1 = new ViennaModelCoefficientsLoader(latitude, longitude1, ViennaModelType.VIENNA_THREE);
model2 = new ViennaModelCoefficientsLoader(latitude, longitude2, ViennaModelType.VIENNA_THREE);
model1.loadViennaCoefficients(dateTimeComponents);
model2.loadViennaCoefficients(dateTimeComponents);
Assert.assertEquals(model1.getA()[0], model2.getA()[0], epsilon);
Assert.assertEquals(model1.getA()[1], model2.getA()[1], epsilon);
Assert.assertEquals(model1.getZenithDelay()[0], model2.getZenithDelay()[0], epsilon);
Assert.assertEquals(model1.getZenithDelay()[1], model2.getZenithDelay()[1], epsilon);
} }
@Test @Test
......
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Please register or to comment