101 using namespace MSP::CCS;
109 const double PI = 3.14159265358979323e0;
121 es2( 0.0066943799901413800 ),
122 es4( 4.4814723452405e-005 ),
123 es6( 3.0000678794350e-007 ),
124 Ra( 6371007.1810824 ),
125 Mill_Origin_Long( 0.0 ),
126 Mill_False_Easting( 0.0 ),
127 Mill_False_Northing( 0.0 ),
128 Mill_Delta_Northing( 14675058.0 ),
129 Mill_Max_Easting( 20015110.0 ),
130 Mill_Min_Easting( -20015110.0 )
148 double inv_f = 1 / ellipsoidFlattening;
150 if (ellipsoidSemiMajorAxis <= 0.0)
154 if ((inv_f < 250) || (inv_f > 350))
158 if ((centralMeridian < -
PI) || (centralMeridian >
TWO_PI))
170 Ra =
semiMajorAxis * (1.0 - es2 / 6.0 - 17.0 * es4 / 360.0 - 67.0 * es6 /3024.0);
171 if (centralMeridian >
PI)
172 centralMeridian -=
TWO_PI;
173 Mill_Origin_Long = centralMeridian;
174 Mill_False_Easting = falseEasting;
175 Mill_False_Northing = falseNorthing;
176 if (Mill_Origin_Long > 0)
178 Mill_Max_Easting = 19903915.0;
179 Mill_Min_Easting = -20015110.0;
181 else if (Mill_Origin_Long < 0)
183 Mill_Max_Easting = 20015110.0;
184 Mill_Min_Easting = -19903915.0;
188 Mill_Max_Easting = 20015110.0;
189 Mill_Min_Easting = -20015110.0;
202 Mill_Origin_Long = mc.Mill_Origin_Long;
203 Mill_False_Easting = mc.Mill_False_Easting;
204 Mill_False_Northing = mc.Mill_False_Northing;
205 Mill_Delta_Northing = mc.Mill_Delta_Northing;
206 Mill_Max_Easting = mc.Mill_Max_Easting;
207 Mill_Min_Easting = mc.Mill_Min_Easting;
226 Mill_Origin_Long = mc.Mill_Origin_Long;
227 Mill_False_Easting = mc.Mill_False_Easting;
228 Mill_False_Northing = mc.Mill_False_Northing;
229 Mill_Delta_Northing = mc.Mill_Delta_Northing;
230 Mill_Max_Easting = mc.Mill_Max_Easting;
231 Mill_Min_Easting = mc.Mill_Min_Easting;
274 double longitude = geodeticCoordinates->
longitude();
275 double latitude = geodeticCoordinates->
latitude();
276 double slat = sin(0.8 * latitude);
282 if ((longitude < -
PI) || (longitude >
TWO_PI))
287 dlam = longitude - Mill_Origin_Long;
296 double easting = Ra * dlam + Mill_False_Easting;
297 double northing = (Ra / 1.6) * log((1.0 + slat) /
298 (1.0 - slat)) + Mill_False_Northing;
322 double easting = mapProjectionCoordinates->
easting();
323 double northing = mapProjectionCoordinates->
northing();
325 if ((easting < (Mill_False_Easting + Mill_Min_Easting))
326 || (easting > (Mill_False_Easting + Mill_Max_Easting)))
330 if ((northing < (Mill_False_Northing - Mill_Delta_Northing)) ||
331 (northing > (Mill_False_Northing + Mill_Delta_Northing) ))
336 dy = northing - Mill_False_Northing;
337 dx = easting - Mill_False_Easting;
338 double latitude = atan(sinh(0.8 * dy / Ra)) / 0.8;
339 double longitude = Mill_Origin_Long + dx / Ra;
353 else if (longitude < -
PI)