📄 cirpro.cpp
字号:
// cirPro.cpp: implementation of the cirPro class.
//
//////////////////////////////////////////////////////////////////////
#include "stdafx.h"
#include "projection.h"
#include "cirPro.h"
#include "math.h"
#include<iostream>
using namespace std;
#ifdef _DEBUG
#undef THIS_FILE
static char THIS_FILE[]=__FILE__;
#define new DEBUG_NEW
#endif
//////////////////////////////////////////////////////////////////////
// Construction/Destruction
//////////////////////////////////////////////////////////////////////
cirPro::cirPro()
{
}
cirPro::~cirPro()
{
}
void cirPro::calculate()
{
double a=6378140.0;
double b=6356755.0;
double pi=3.1415926;
double fai1=37.5/180*pi;
double fai2=41.0/180*pi;
double lam0=116.0/180*pi;
double ep,psi,psi1,psi2,u,r1,r2,rou,rous,x,y;
ep=sqrt((a*a-b*b)/(a*a));
psi1=asin(ep*sin(fai1));
u1=tan(pi/4.0+fai1/2.0)/pow(tan(pi/4.0+psi1/2.0),ep);
// cout<<u1<<endl;
psi2=asin(ep*sin(fai2));
u2=tan(pi/4+fai2/2.0)/pow(tan(pi/4+psi2/2.0),ep);
// cout<<u2<<endl;
r1=a*cos(fai1)/sqrt(1-ep*ep*sin(fai1)*sin(fai1));
r2=a*cos(fai2)/sqrt(1-ep*ep*sin(fai2)*sin(fai2));
alf=(log(r1)-log(r2))/(log(u2)-log(u1));
// cout<<alf<<endl;
fai0=asin(alf)/pi*180.0;
// cout<<fai0<<endl;
kcm=100.0/500.0*r1*pow(u1,alf)/alf;
// cout<<"积分常数K="<<kcm<<endl;
double fai=36.0;
psi=asin(ep*sin(36.0/180.0*pi));
u=tan(pi/4+36.0/180.0*pi/2.0)/pow(tan(pi/4.0+psi/2.0),ep);
rous=kcm/pow(u,alf);
for(int faip=36;faip<=43;faip++)
{
double lam=112.0;
for(int lamp=112;lamp<=120;lamp++)
{
psi=asin(ep*sin(fai/180.0*pi));
u=tan(pi/4.0+fai/180.0*pi/2.0)/pow(tan(pi/4.0+psi/2.0),ep);
rou=kcm/pow(u,alf);
double p;
p=alf*(lam/180*pi-lam0);
co[lamp][faip].x=rous-rou*cos(p);
co[lamp][faip].y=rou*sin(p);
lam++;
}
fai++;
}
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -