UNCLASSIFIED

GeographicTranslator
 All Classes Namespaces Files Functions Variables Enumerations Enumerator Friends Macros
Orthographic.h
Go to the documentation of this file.
1 // CLASSIFICATION: UNCLASSIFIED
2 
3 #ifndef Orthographic_H
4 #define Orthographic_H
5 
6 /***************************************************************************/
7 /* RSC IDENTIFIER: ORTHOGRAPHIC
8  *
9  * ABSTRACT
10  *
11  * This component provides conversions between Geodetic coordinates
12  * (latitude and longitude in radians) and Orthographic projection
13  * coordinates (easting and northing in meters). The Orthographic
14  * projection employs a spherical Earth model. The Spherical Radius
15  * used is the the radius of the sphere having the same area as the
16  * ellipsoid.
17  *
18  * ERROR HANDLING
19  *
20  * This component checks parameters for valid values. If an invalid value
21  * is found, the error code is combined with the current error code using
22  * the bitwise or. This combining allows multiple error codes to be
23  * returned. The possible error codes are:
24  *
25  * ORTH_NO_ERROR : No errors occurred in function
26  * ORTH_LAT_ERROR : Latitude outside of valid range
27  * (-90 to 90 degrees)
28  * ORTH_LON_ERROR : Longitude outside of valid range
29  * (-180 to 360 degrees)
30  * ORTH_EASTING_ERROR : Easting outside of valid range
31  * (False_Easting +/- ~6,500,000 m,
32  * depending on ellipsoid parameters)
33  * ORTH_NORTHING_ERROR : Northing outside of valid range
34  * (False_Northing +/- ~6,500,000 m,
35  * depending on ellipsoid parameters)
36  * ORTH_RADIUS_ERROR : Coordinates too far from pole,
37  * depending on ellipsoid and
38  * projection parameters
39  * ORTH_ORIGIN_LAT_ERROR : Origin latitude outside of valid range
40  * (-90 to 90 degrees)
41  * ORTH_CENT_MER_ERROR : Central meridian outside of valid range
42  * (-180 to 360 degrees)
43  * ORTH_A_ERROR : Semi-major axis less than or equal to zero
44  * ORTH_INV_F_ERROR : Inverse flattening outside of valid range
45  * (250 to 350)
46  *
47  * REUSE NOTES
48  *
49  * ORTHOGRAPHIC is intended for reuse by any application that performs a
50  * Orthographic projection or its inverse.
51  *
52  * REFERENCES
53  *
54  * Further information on ORTHOGRAPHIC can be found in the Reuse Manual.
55  *
56  * ORTHOGRAPHIC originated from : U.S. Army Topographic Engineering Center
57  * Geospatial Information Division
58  * 7701 Telegraph Road
59  * Alexandria, VA 22310-3864
60  *
61  * LICENSES
62  *
63  * None apply to this component.
64  *
65  * RESTRICTIONS
66  *
67  * ORTHOGRAPHIC has no restrictions.
68  *
69  * ENVIRONMENT
70  *
71  * ORTHOGRAPHIC was tested and certified in the following environments:
72  *
73  * 1. Solaris 2.5 with GCC, version 2.8.1
74  * 2. Windows 95 with MS Visual C++, version 6
75  *
76  * MODIFICATIONS
77  *
78  * Date Description
79  * ---- -----------
80  * 06-15-99 Original Code
81  * 03-05-07 Original C++ Code
82  *
83  */
84 
85 
86 #include "CoordinateSystem.h"
87 
88 
89 namespace MSP
90 {
91  namespace CCS
92  {
93  class MapProjection4Parameters;
94  class MapProjectionCoordinates;
95  class GeodeticCoordinates;
96 
97 
98  /***************************************************************************/
99  /*
100  * DEFINES
101  */
102 
104  {
105  public:
106 
107  /*
108  * The constructor receives the ellipsoid parameters and
109  * projection parameters as inputs, and sets the corresponding state
110  * variables. If any errors occur, an exception is thrown with a description
111  * of the error.
112  *
113  * ellipsoidSemiMajorAxis : Semi-major axis of ellipsoid, in meters (input)
114  * ellipsoidFlattening : Flattening of ellipsoid (input)
115  * centralMeridian : Longitude in radians at the center of (input)
116  * the projection
117  * originLatitude : Latitude in radians at which the (input)
118  * point scale factor is 1.0
119  * falseEasting : A coordinate value in meters assigned to the
120  * central meridian of the projection. (input)
121  * falseNorthing : A coordinate value in meters assigned to the
122  * origin latitude of the projection (input)
123  */
124 
125  Orthographic( double ellipsoidSemiMajorAxis, double ellipsoidFlattening, double centralMeridian, double originLatitude, double falseEasting, double falseNorthing );
126 
127 
128  Orthographic( const Orthographic &o );
129 
130 
131  ~Orthographic( void );
132 
133 
134  Orthographic& operator=( const Orthographic &o );
135 
136 
137  /*
138  * The function getParameters returns the current ellipsoid
139  * parameters and Orthographic projection parameters.
140  *
141  * ellipsoidSemiMajorAxis : Semi-major axis of ellipsoid, in meters (output)
142  * ellipsoidFlattening : Flattening of ellipsoid (output)
143  * centralMeridian : Longitude in radians at the center of (output)
144  * the projection
145  * originLatitude : Latitude in radians at which the (output)
146  * point scale factor is 1.0
147  * falseEasting : A coordinate value in meters assigned to the
148  * central meridian of the projection. (output)
149  * falseNorthing : A coordinate value in meters assigned to the
150  * origin latitude of the projection (output)
151  */
152 
154 
155 
156  /*
157  * The function convertFromGeodetic converts geodetic (latitude and
158  * longitude) coordinates to Orthographic projection (easting and northing)
159  * coordinates, according to the current ellipsoid and Orthographic projection
160  * parameters. If any errors occur, an exception is thrown with a description
161  * of the error.
162  *
163  * longitude : Longitude (lambda) in radians (input)
164  * latitude : Latitude (phi) in radians (input)
165  * easting : Easting (X) in meters (output)
166  * northing : Northing (Y) in meters (output)
167  */
168 
170 
171 
172  /*
173  * The function convertToGeodetic converts Orthographic projection
174  * (easting and northing) coordinates to geodetic (latitude and longitude)
175  * coordinates, according to the current ellipsoid and Orthographic projection
176  * coordinates. If any errors occur, an exception is thrown with a description
177  * of the error.
178  *
179  * easting : Easting (X) in meters (input)
180  * northing : Northing (Y) in meters (input)
181  * longitude : Longitude (lambda) in radians (output)
182  * latitude : Latitude (phi) in radians (output)
183  */
184 
186 
187  private:
188 
189  /* Ellipsoid Parameters, default to WGS 84 */
190  double es2; /* Eccentricity (0.08181919084262188000) squared */
191  double es4; /* es2 * es2 */
192  double es6; /* es4 * es2 */
193  double Ra; /* Spherical Radius */
194 
195  /* Orthographic projection Parameters */
196  double Orth_Origin_Lat; /* Latitude of origin in radians */
197  double Orth_Origin_Long; /* Longitude of origin in radians */
198  double Orth_False_Easting;
199  double Orth_False_Northing;
200  double Sin_Orth_Origin_Lat; /* sin(Orth_Origin_Lat) */
201  double Cos_Orth_Origin_Lat; /* cos(Orth_Origin_Lat) */
202 
203  };
204  }
205 }
206 
207 #endif
208 
209 
210 // CLASSIFICATION: UNCLASSIFIED