//(1)
void get_title_info(int n,int &x,int &y)
{
int i,s=1;
for(i=1;i<n;i++)s=s*2;
x=s;
y=s;
}
//(2)
void get_from_tile(int n,int x0,int y0,double &x,double &y)
{
int xmax,ymax;//x表示经度,y表示纬度
get_tile_info(n,xmax,ymax);
x=-90+180.0/xmax*x0-180.0/xmax/2;
y=-180+360/ymax*y0-360.0/ymax/2;
}
//(3)
void get_from_cords(int n,double x,double y,int &x0,int &y0)
{
int xmax,ymax;
get_tile_info(n,xmax,ymax);
x0=(x+90)%(180.0/xmax)+1;
y0=(y+180)%(360.0/ymax)+1;
}
//(4)
void get_from_polygon(double x[],double y[],int n0,int &n,int &x0,int &y0){
int x1[maxsize],y1[maxsize],tag;
for(n=19;n>0;n++){
get_from_cords(n,x[0],y[0],x1[0],y1[0]);
tag=0;
for(i=1;i<n0;i++){
get_from_cords(n,x[i],y[i],x1[i],y1[i]){
if(x[i]!=x1[0]||y[i]!=y1[0])tag=1;
}
}
if(tag==0)break;
}
}