Statistics
| Revision:

svn-gvsig-desktop / trunk / libraries / libCq CMS for java.old / src / org / cresques / geo / Ellipsoid.java @ 2

History | View | Annotate | Download (1.83 KB)

1
package org.cresques.geo;
2

    
3
public class Ellipsoid {
4
        //'WGS72':        (6378135.0, 298.26, 1972),
5
        public static Ellipsoid wgs72 = new Ellipsoid("WGS72", 6378135.0, 298.26);
6
        //'WGS84':        (6378137.0, 298.257223563, 1984),
7
        public static Ellipsoid wgs84 = new Ellipsoid("WGS84", 6378137.0, 298.257223563);
8
        //'GRS80':        (6378137.0, 298.257222101, 1980), // , 6356752.314
9
        public static Ellipsoid grs80 = new Ellipsoid("GRS80", 6378137.0, 298.257222101); 
10
        //'Hayford':        (6378388.0, 297.0, 1909),
11
        public static Ellipsoid hayford = new Ellipsoid("Hayford", 6378388.0, 297.0);
12
        //'Struve':        (6378298.0, 299.73, 1860),
13
        public static Ellipsoid struve = new Ellipsoid("Struve", 6378298.0, 299.73);
14
        // ed50 ... ?hayford?
15
        public static Ellipsoid ed50 = new Ellipsoid("ED50", 6378388.0, 297.0);
16
        // Clarcke 1866        a = 6378206.4;        f = 294.9786982;
17
        public static Ellipsoid clarke66 = new Ellipsoid("CLARKE 1866", 6378206.4, 294.9786982);
18

    
19
        
20
        private String pName = null;
21
        private double pMajor = 0.0;
22
        private double pFlat = 0.0;
23
        public double a, b, f, e, e2, ep, ep2;
24
        public Ellipsoid(String name, double major, double flat) {
25
                pName = name;
26
                pMajor = major;
27
                pFlat = flat;
28
                a = pMajor;
29
                f = pFlat;
30
                ainvto();
31
        }
32
        private void ainvto()
33
        {
34
                b = (a * (pFlat - 1.0D)) / pFlat;
35
                e2 = (2D * pFlat - 1.0D) / (pFlat * pFlat);
36
                e = Math.sqrt(e2);
37
                ep2 = e2 / (1.0D - e2);
38
                ep = Math.sqrt(ep2);
39
        }
40

    
41
        private void abto()
42
        {
43
                if(Math.abs(a - b) < 9.9999999999999995E-021D)
44
                {
45
                        pFlat = 0.0D;
46
                        e2 = 0.0D;
47
                } else
48
                {
49
                        pFlat = a / (a - b);
50
                        e2 = (2D * pFlat - 1.0D) / (pFlat * pFlat);
51
                }
52
                e = Math.sqrt(e2);
53
                ep2 = e2 / (1.0D - e2);
54
                ep = Math.sqrt(ep2);
55
        }
56
        
57
        public double [] getParam() {
58
                double [] elipar = new double[8];
59
                elipar[1] = pMajor;
60
                elipar[2] = pFlat;
61
                elipar[3] = b;
62
                elipar[4] = e;
63
                elipar[5] = e2;
64
                elipar[6] = ep;
65
                elipar[7] = ep2;
66
                return elipar;
67
        }
68
}