1 | //#define TEST_MOLLWEIDE
|
---|
2 | #include <stdlib.h>
|
---|
3 | #include <stdio.h>
|
---|
4 | #include <math.h>
|
---|
5 | #include "sopnamsp.h"
|
---|
6 | #include "mollweide.h"
|
---|
7 |
|
---|
8 | int main()
|
---|
9 | {
|
---|
10 | FILE *file = fopen("mollw.data","w");
|
---|
11 | FILE *file2 = fopen("mollw2.data","w");
|
---|
12 | int i,npoints=250000;
|
---|
13 | double tvrai,lon,lat,x,y,tcalc,a;
|
---|
14 | double longitude,latitude,tll,txy;
|
---|
15 |
|
---|
16 | tll=txy=0.;
|
---|
17 | for(i=0;i<=npoints;i++) {
|
---|
18 | //tvrai = 1.57078;
|
---|
19 | tvrai = (double)i*(M_PI_2) /(double)npoints;
|
---|
20 | a = 2.*tvrai+sin(2.*tvrai);
|
---|
21 | lat = asin(a/M_PI);
|
---|
22 | tcalc = MollWeide_XY(0.,lat,&x,&y);
|
---|
23 | if(fabs(tcalc-tvrai)>tll) {tll = fabs(tcalc-tvrai); txy=tvrai;}
|
---|
24 | if(file) fprintf(file,"%e %e %e %e\n",tvrai,tcalc,a,tcalc-tvrai);
|
---|
25 | }
|
---|
26 | printf("Maximum difference: %e for t=%.10e=Pi/2-%.10e\n",tll,txy,M_PI_2-txy);
|
---|
27 | if(file) fclose(file);
|
---|
28 |
|
---|
29 | for(lon=0.;lon<360.;lon+=2.5) for(lat=-90.;lat<=90.1;lat+=2.5) {
|
---|
30 | txy = MollWeide_XY(lon*M_PI/180.,lat*M_PI/180.,&x,&y);
|
---|
31 | tll = MollWeide_LL(x,y,&longitude,&latitude);
|
---|
32 | longitude *= 180./M_PI;
|
---|
33 | latitude *= 180./M_PI;
|
---|
34 | if(file2) fprintf(file2,"%e %e %e %e %e %e %e %e %e %e\n"
|
---|
35 | ,lon,lat,x,y,longitude,latitude,txy,tll,longitude-lon,latitude-lat);
|
---|
36 | }
|
---|
37 | if(file2) fclose(file2);
|
---|
38 | return 0;
|
---|
39 | }
|
---|