#include "cproj.h"/* Variables common to all subroutines in this code file
-----------------------------------------------------*/
static double lon_center; /* Center longitude (projection center) */
static double R; /* Radius of the earth (sphere) */
static double false_easting; /* x offset in meters */
static double false_northing; /* y offset in meters *//* Initialize the Sinusoidal projection
------------------------------------*/
sininvint(r, center_long,false_east,false_north)
double r; /* (I) Radius of the earth (sphere) */
double center_long; /* (I) Center longitude */
double false_east; /* x offset in meters */
double false_north; /* y offset in meters */
{
/* Place parameters in static storage for common use
-------------------------------------------------*/
R = r;
lon_center = center_long;
false_easting = false_east;
false_northing = false_north;/* Report parameters to the user
-----------------------------*/
ptitle("SINUSOIDAL");
radius(r);
cenlon(center_long);
offsetp(false_easting,false_northing);
return(OK);
}/* Sinusoidal inverse equations--mapping x,y to lat,long
-----------------------------------------------------*/
sininv(x, y, lon, lat)
double x; /* (I) X projection coordinate */
double y; /* (I) Y projection coordinate */
double *lon; /* (O) Longitude */
double *lat; /* (O) Latitude */
{
double adjust_lon(); /* Function to adjust longitude to -180 - 180 */
double temp; /* Re-used temporary variable *//* Inverse equations
-----------------*/
x -= false_easting;
y -= false_northing;
*lat = y / R;
if (fabs(*lat) > HALF_PI)
{
p_error("Input data error","sinusoidal-inverse");
return(164);
}
temp = fabs(*lat) - HALF_PI;
if (fabs(temp) > EPSLN)
{
temp = lon_center + x / (R * cos(*lat));
*lon = adjust_lon(temp);
}
else *lon = lon_center;
return(OK);
}
代码是这样的格式的,感觉他的写法不是很常见,这只是一小段,要是改写的话太多了,请问一下,想用这里面的函数,有什么比较好的办法了。
-----------------------------------------------------*/
static double lon_center; /* Center longitude (projection center) */
static double R; /* Radius of the earth (sphere) */
static double false_easting; /* x offset in meters */
static double false_northing; /* y offset in meters *//* Initialize the Sinusoidal projection
------------------------------------*/
sininvint(r, center_long,false_east,false_north)
double r; /* (I) Radius of the earth (sphere) */
double center_long; /* (I) Center longitude */
double false_east; /* x offset in meters */
double false_north; /* y offset in meters */
{
/* Place parameters in static storage for common use
-------------------------------------------------*/
R = r;
lon_center = center_long;
false_easting = false_east;
false_northing = false_north;/* Report parameters to the user
-----------------------------*/
ptitle("SINUSOIDAL");
radius(r);
cenlon(center_long);
offsetp(false_easting,false_northing);
return(OK);
}/* Sinusoidal inverse equations--mapping x,y to lat,long
-----------------------------------------------------*/
sininv(x, y, lon, lat)
double x; /* (I) X projection coordinate */
double y; /* (I) Y projection coordinate */
double *lon; /* (O) Longitude */
double *lat; /* (O) Latitude */
{
double adjust_lon(); /* Function to adjust longitude to -180 - 180 */
double temp; /* Re-used temporary variable *//* Inverse equations
-----------------*/
x -= false_easting;
y -= false_northing;
*lat = y / R;
if (fabs(*lat) > HALF_PI)
{
p_error("Input data error","sinusoidal-inverse");
return(164);
}
temp = fabs(*lat) - HALF_PI;
if (fabs(temp) > EPSLN)
{
temp = lon_center + x / (R * cos(*lat));
*lon = adjust_lon(temp);
}
else *lon = lon_center;
return(OK);
}
代码是这样的格式的,感觉他的写法不是很常见,这只是一小段,要是改写的话太多了,请问一下,想用这里面的函数,有什么比较好的办法了。
extern"C" int sininvint( double r,double center_long,double false_east,double false_north) ;
声明一下就可以了
我建议单独创建一个静态连接库,这样以后使用就更加方便。
extern "C"
{
#include ...
}