//Dstl (c) Crown Copyright 2017
package uk.gov.dstl.geo.osgb;
import static org.junit.Assert.*;
import org.junit.Test;
import uk.gov.dstl.common.geo.osgb.CartesianConversion;
import uk.gov.dstl.common.geo.osgb.Constants;
public class CartesianConversionTest {
private static final double LAT_AIRY1830 = 52.657570305555552;
private static final double LON_AIRY1830 = 1.7179215833333332;
private static final double ELL_AIRY1830 = 24.7;
private static final double X_CART = 3874938.850;
private static final double Y_CART = 116218.624;
private static final double Z_CART = 5047168.207;
@Test
public void testConvertToCartesian(){
double[] output = uk.gov.dstl.common.geo.osgb.CartesianConversion.fromLatLon(new double[]{LAT_AIRY1830, LON_AIRY1830, ELL_AIRY1830}, Constants.ELLIPSOID_AIRY1830_MAJORAXIS, Constants.ELLIPSOID_AIRY1830_MINORAXIS);
assertEquals(X_CART, output[0], 0.0005);
assertEquals(Y_CART, output[1], 0.0005);
assertEquals(Z_CART, output[2], 0.0005);
}
@Test
public void testConvertToLatLon(){
double[] output = uk.gov.dstl.common.geo.osgb.CartesianConversion.toLatLon(new double[]{X_CART, Y_CART, Z_CART}, Constants.ELLIPSOID_AIRY1830_MAJORAXIS, Constants.ELLIPSOID_AIRY1830_MINORAXIS, 0.00000001);
assertEquals(LAT_AIRY1830, output[0], 0.00001);
assertEquals(LON_AIRY1830, output[1], 0.00001);
assertEquals(ELL_AIRY1830, output[2], 0.0005);
}
@Test
public void testConvertToAndFro(){
double[] cartesian = uk.gov.dstl.common.geo.osgb.CartesianConversion.fromLatLon(new double[]{LAT_AIRY1830, LON_AIRY1830, ELL_AIRY1830}, Constants.ELLIPSOID_AIRY1830_MAJORAXIS, Constants.ELLIPSOID_AIRY1830_MINORAXIS);
double[] latlon = uk.gov.dstl.common.geo.osgb.CartesianConversion.toLatLon(cartesian, Constants.ELLIPSOID_AIRY1830_MAJORAXIS, Constants.ELLIPSOID_AIRY1830_MINORAXIS, 0.000001);
assertEquals(LAT_AIRY1830, latlon[0], 0.00001);
assertEquals(LON_AIRY1830, latlon[1], 0.00001);
assertEquals(ELL_AIRY1830, latlon[2], 0.00001);
}
@Test
public void testHelmertConversion(){
double[] ht = CartesianConversion.helmertTransformation(new double[]{ 1, 2, 3}, 3.0, 2.0, 1.0, 0.5, 1.0, 2.0, 3.0);
assertEquals(ht[0], 4.5, 0.0001);
assertEquals(ht[1], 5.0, 0.0001);
assertEquals(ht[2], 5.5, 0.0001);
}
}