资源简介
计算大地水准面高程序,C语言编写,EGM96模型,和大家分享一下。。。

代码片段和文件信息
#include
#include
#include
using namespace std;
double Arr[721];
int SignArr[181];
double T360[361];
double CosMLamta[361];
double SinMLamta[361];
double CnmSnm[65338][2];
double A360[361];
int IndCS[361];
const double a = 6378136.3;
const double GM = 3986004.415E+8;
void Init()
{
Arr[0] = 1;
double Val=1;
for( int i=1; i<721; ++i)
Arr[i]=i*Arr[i-1];
SignArr[0]=1;
for( int j=1; j<181; ++j)
SignArr[j]=(-1)*SignArr[j-1];
}
void InitT360(double t)
{
T360[0]=1;
for( int i=1; i<361; ++i)
T360[i]=t*T360[i-1];
}
void InitA360(double r)
{
A360[0] = 1;
A360[1] = a/r;
for( int n=2; n<=360; ++n)
A360[n] = A360[n-1]*A360[1];
}
void InitCosSin(double lamta)
{
for( int m=0; m<361; ++m)
{
CosMLamta[m]=cos(m*lamta);
SinMLamta[m]=sin(m*lamta);
}
}
double Pnm(int nint m double t)
{
double Ret = 1;
Ret = Ret*pow(2n*(-1));
Ret = Ret*pow(1-t*t(double)m/2);
double Sum = 0;
int r = (n-m)/2;
for(int k=0; k<=r; ++k)
{
Sum+=SignArr[k]*Arr[2*n-2*k]/Arr[k]/Arr[n-k]/Arr[n-m-2*k]*T360[n-m-2*k];
/*cout<<“Sum=“< cout<<“Arr[2n-2k]=“< cout<<“T360=“< }
//cout<<“Sum=“< Ret = Ret* Sum;
return Ret;
}
void CreateIndexForCS()
{
IndCS[0] = 0;
IndCS[1] = 0;
IndCS[2] = 0;
int Ind = 3;
for( ; Ind<=360; ++Ind)
IndCS[Ind]=IndCS[Ind-1]+Ind;
}
double CaculateV(double rdouble thetadouble lamta)
{
double t = cos(theta);
double Ret = GM/r;
double EmSum = 1;
for( int n=2;n<=5;++n)
{
double InSum = 0;
double Temp = 0;
for( int m=0; m<=n; ++m)
{
int Index = IndCS[n]+m;
Temp = CnmSnm[Index][0]*CosMLamta[m]+CnmSnm[Index][1]*SinMLamta[m];
InSum += Temp*Pnm(nmt);
if(Temp>1e10)
{
cout< cout<<“Temp=“< cout<<“Pnm=“< //cout<<“A360=“< }
}
EmSum += InSum*A360[n];
}
return Ret*EmSum;
}
int main()
{
Init();
CreateIndexForCS();
double rthetalamta;
cout<<“Input rthetalamta:“;
cin>>r>>theta>>lamta;
double t = cos(theta);
InitCosSin(lamta);
InitA360(r);
InitT360(t);
ifstream infile(“egm96_to360.ascii“);
long LineCount =0;
int Count =0;
double temp =0;
while(infile>>temp)
{
if(Count>=2)
CnmSnm[LineCount][Count-2]=temp;
if(Count==3)
LineCount+=1;
Count += 1;
if(Count == 6)
Count = 0;
}
infile.close();
cout<
//system(“pause“);
return 0;
}
属性 大小 日期 时间 名称
----------- --------- ---------- ----- ----
文件 2659 2011-05-13 20:09 EGM96\CalGravPotential.cpp
文件 347388 2011-05-13 20:09 EGM96\Debug\CalGravPotential.obj
文件 0 2011-05-13 20:09 EGM96\Debug\CalGravPotential.sbr
文件 295936 2011-05-13 20:09 EGM96\Debug\EGM96.bsc
文件 577619 2011-05-13 20:09 EGM96\Debug\EGM96.exe
文件 834696 2011-05-13 20:09 EGM96\Debug\EGM96.ilk
I.A.... 2177648 2011-05-13 20:08 EGM96\Debug\EGM96.pch
文件 1156096 2011-05-13 20:09 EGM96\Debug\EGM96.pdb
文件 115712 2011-05-13 20:10 EGM96\Debug\vc60.idb
文件 110592 2011-05-13 20:09 EGM96\Debug\vc60.pdb
文件 4287 2009-10-26 20:04 EGM96\EGM96.dsp
文件 535 2009-10-26 19:40 EGM96\EGM96.dsw
文件 41984 2011-05-13 20:12 EGM96\EGM96.ncb
文件 48640 2011-05-13 20:12 EGM96\EGM96.opt
文件 1048 2011-05-13 20:09 EGM96\EGM96.plg
文件 5292378 2009-03-25 09:01 EGM96\egm96_to360.ascii
文件 67 2011-05-13 20:13 EGM96\程序说明.txt
目录 0 2011-05-13 20:09 EGM96\Debug
目录 0 2011-05-13 20:12 EGM96
----------- --------- ---------- ----- ----
11007285 19
- 上一篇:《Visual C++ 6.0教程》源代码
- 下一篇:粒子群优化算法 C++实现
相关资源
- 基于MFC的TCP调试助手源码95706
- 国际象棋的qt源代码
- 操作系统c语言模拟文件管理系统844
- C语言开发实战宝典
- C++中头文件与源文件的作用详解
- 基于mfc的多线程文件传输
- C++多线程网络编程Socket
- VC++ 多线程文件读写操作
- C语言代码高亮html输出工具
- 猜数字游戏 c语言代码
- C语言课程设计
- 数字电位器C语言程序
- CCS FFT c语言算法
- 使用C语言编写的病房管理系统
- 通信过程中的RS编译码程序(c语言)
- 利用C++哈希表的方法实现电话号码查
- 计算机二级C语言上机填空,改错,编
- 用回溯法解决八皇后问题C语言实现
- 移木块游戏,可以自编自玩,vc6.0编写
- 简易教务管理系统c语言开发文档
- 操作系统课设 读写者问题 c语言实现
- 小波变换算法 c语言版
- C流程图生成器,用C语言代码 生成C语
- 3des加密算法C语言实现
- 简单的C语言点对点聊天程序
- 单片机c语言源程序(51定时器 八个按
- C++纯文字DOS超小RPG游戏
- 个人日常财务管理系统(C语言)
- MFC数字钟(基于VC6.0)
- c语言电子商务系统
评论
共有 条评论