//
// Created by marcos on 2/06/16.
//

#include <math.h>
#include <stdio.h>

#define deg2rad(d) (((d)*M_PI)/180)
#define rad2deg(d) (((d)*180)/M_PI)
#define earth_radius 6378137

/* The following functions take or return their results in degrees */

double y2lat_d(double y) { return rad2deg(2 * atan(exp(  deg2rad(y) ) ) - M_PI/2); }
double x2lon_d(double x) { return x; }
double lat2y_d(double lat) { return rad2deg(log(tan(M_PI/4+ deg2rad(lat)/2))); }
double lon2x_d(double lon) { return lon; }

int main(){
    printf("****************************\n");
    double x_izq, x_der, x_med, y_inf, y_sup, y_med, lon_izq, lon_der, lon_med, lat_inf, lat_sup, lat_med;
    x_izq = -13.0;
    x_der = 5.968333;
    x_med = ( x_der + x_izq ) / 2.0;
    y_inf = 34.736876;
    y_sup = 44.445869;
    y_med = ( y_inf + y_sup ) / 2.0;


    lon_izq = x2lon_d( x_izq );
    lon_der = x2lon_d( x_der );
    lon_med = x2lon_d( x_med );
    printf("x_izq=%f lon_izq=%f\n", x_izq, lon_izq );
    printf("x_med=%f lon_med=%f\n", x_med, lon_med );
    printf("x_der=%f lon_der=%f\n", x_der, lon_der );

    printf("             * * *       \n");


    lat_inf = y2lat_d( y_inf );
    lat_sup = y2lat_d( y_sup );
    lat_med = y2lat_d( y_med );
    printf("y_inf=%f lat_inf=%f\n", y_inf, lat_inf );
    printf("y_med=%f lat_med=%f\n", y_med, lat_med );
    printf("y_sup=%f lat_sup=%f\n", y_sup, lat_sup );
    printf("****************************\n");

};

/*mapa_espana
        Vértice inferior izquierdo:
lon=-13.000000 lat=34.736876
Vértice inferior derecho:
        lon=5.968333 lat=34.736876
Vértice superior izquierdo:
        lon=-13.000000 lat=44.445869
Vértice superior derecho:
        lon=5.968333 lat=44.445869
        */