資源簡介
采用C語言編寫,程序注釋豐富,外彈道經(jīng)典的解三自由度彈道方程。

代碼片段和文件信息
//function:滑翔彈道計算
??2012.12.07
#include
#include
#include
#define?RAD?57.3
#define?PI??3.1415926
double?Y[8]?dy[6];
/*******
Y[0]:?t
Y[1]:?V
Y[2]:?cita
Y[3]:?X
Y[4]:?Y
Y[5]:?m
*******/
?double?MaALPHACXCYLSTHETADETAZK1K2L1L2CxFy2Fx2;
?double?t_stept;
?double?CX0CX2CYACYZMZDTADTAZazXFYF;
void?initial()
{
double?Velymcita0;??????double?d=0.133;
m=44.5?;
Vel=400;????????????????//初始速度m/s
y=15000;????????????????//初始高度m
cita0=0.0;??????????????//射角(度)
????ALPHA=0.0;??????????????????//攻角(度)
L=1.49;?????????????????//特征長度
S=PI*d*d/4.0;???//特征面積
????K1=35;
????K2=50;
Y[0]=0.0;????Y[1]=Vel;???Y[2]=cita0/RAD;???????Y[3]=0.0;?????Y[4]=y;??????Y[5]=m;
}
double?GetSONIC(double?y)??????????????????????????//計算當(dāng)?shù)芈曀?br/>{
double?TySONIC;
Ty=288.34-5.86*y/1000.0;
SONIC=20.46*sqrt(Ty);
return?SONIC;
}
double?GetAirDensity(double?y)?????????????????????//計算空氣密度
{?
????double?RHOn=1.225RHO;??????????????????????????????
RHO=RHOn*pow(1.0-2.0323*y/1000004.830);??
return?RHO;
}
double?Get_g(double?y)?????????????????????????????//計算重力加速度
{
double?R=6371000g;???????????????????????????
????double?g0=9.806;
g=g0*(1.0-2.0*y/R);
return?g;
}
double?int11(double?YY[2][5]double?x)???????????????//線性插值
{
int?i;
double?r;
for(i=0;i<4;i++)
{
if(x<=YY[0][i+1]){
break;
}
}
r=YY[1][i]+(YY[1][i+1]-YY[1][i])*(x-YY[0][i])/(YY[0][i+1]-YY[0][i]);
return?r;
}
void?interp()???????????????????????????????????????//插值函數(shù)
{
double?ACX[2][5]={0.60.80.91.01.10.14920.157540.171400.288320.34312};
double?ACX2[2][5]={0.60.80.91.01.10.001860.001900.001920.002000.00209};
double?ACY[2][5]={0.60.80.91.01.10.069770.069480.069330.071140.07427};
double?ACYZ[2][5]={0.60.80.91.01.10.033110.032440.031770.036690.03711};
double?MZZ[2][5]={0.60.80.91.01.1-0.1323-0.1323-0.1322-0.1531-0.1525};
double?AZB[2][5]={0.60.80.91.01.1-1.16-1.16-1.20-1.25-1.17};
????
????CX0=int11(ACXMa);????????????????//Cx0
CX2=int11(ACX2Ma);???????????????//Cx_alp^2
CYA=int11(ACYMa);????????????????//Cy_alp
CYZ=int11(ACYZMa);???????????????//Cy_dtaz
MZDTA=int11(MZZMa);??????????????//mz_dtaz
az=int11(AZBMa);?????????????????//(ALPHA/dtaz)
DTAZ=ALPHA/az;????????????????????//dtaz????????????????
// CX=CX0+CX2*(ALPHA*RAD)*(ALPHA*RAD);
// CY=CYA*(ALPHA*RAD)+CYZ*(DTAZ*RAD);
??DETAZ=DTAZ;
return;
}
void?dery(double?*dydouble?*Y)????????????????????//右端子函數(shù)
{
void?interp();
double?qa[4]gRHOSONIC;
????RHO=GetAirDensity(Y[4]);
SONIC=GetSONIC(Y[4]);
g=Get_g(Y[4]);
q=RHO*Y[1]*Y[1]/2.0;
????Ma=Y[1]/SONIC;
????if(Ma>1.1)Ma=1.1;
if(Ma<0.6)Ma=0.6;
????
if(Y[0]<1)?ALPHA=0.0;
else?ALPHA=35/RAD;
interp();
double?temp=Y[2];
a[0]=sin(Y[2]);
a[1]=cos(Y[2]);
a[2]=sin(ALPHA);
a[3]=cos(ALPHA);
XF=CX*q*S;
YF=CY*q*S;
????dy[0
?屬性????????????大小?????日期????時間???名稱
-----------?---------??----------?-----??----
?????文件???????4587??2014-03-06?18:47??滑翔段彈道程序\Cpp1.cpp
?????文件???????3377??2013-01-20?16:12??滑翔段彈道程序\Cpp1.dsp
?????文件????????516??2013-01-20?16:13??滑翔段彈道程序\Cpp1.dsw
?????文件??????50176??2014-03-06?18:47??滑翔段彈道程序\Cpp1.ncb
?????文件??????48640??2014-03-06?18:47??滑翔段彈道程序\Cpp1.opt
?????文件????????736??2013-08-07?14:16??滑翔段彈道程序\Cpp1.plg
?????文件?????262216??2013-08-07?14:16??滑翔段彈道程序\Debug\Cpp1.exe
?????文件?????307344??2013-08-07?14:16??滑翔段彈道程序\Debug\Cpp1.ilk
?????文件??????25599??2013-08-07?14:16??滑翔段彈道程序\Debug\Cpp1.obj
?????文件?????282276??2013-08-07?14:12??滑翔段彈道程序\Debug\Cpp1.pch
?????文件?????590848??2013-08-07?14:16??滑翔段彈道程序\Debug\Cpp1.pdb
?????文件??????58368??2013-08-07?14:16??滑翔段彈道程序\Debug\vc60.idb
?????文件??????61440??2013-08-07?14:16??滑翔段彈道程序\Debug\vc60.pdb
?????文件????2747064??2013-08-07?14:17??滑翔段彈道程序\result.txt
?????文件???27636408??2013-01-17?21:28??滑翔段彈道程序\數(shù)據(jù)(t,v,θ,X,Y).txt
?????文件?????644675??2013-01-17?14:17??滑翔段彈道程序\滑翔段程序.opj
?????文件???????1184??2013-01-17?14:52??滑翔段彈道程序\自己編寫的導(dǎo)彈程序.txt
?????目錄??????????0??2014-03-06?18:49??滑翔段彈道程序\Debug
?????目錄??????????0??2014-03-06?18:50??滑翔段彈道程序
-----------?---------??----------?-----??----
?????????????32725454????????????????????19
評論
共有 條評論