• 大小: 3.11M
    文件类型: .zip
    金币: 1
    下载: 0 次
    发布日期: 2023-09-10
  • 语言: 其他
  • 标签: 其他  

资源简介

MissileRouteFunc.zip

资源截图

代码片段和文件信息

/*
垂直发射导弹弹道模型

input:
vm : 防空导弹平均速度 (km/s)
vd : 目标速度 (km/s)
pdr[0][0] pdr[0][1] pdr[0][2]: 目标的初始空间坐标 (km)
        t_up : 导弹上升段时间 (s)
        n_max : 导弹最大过载
rk : 导弹毁伤半径 (km)
output:
pmr[k][0] pmr[k][1] pmr[k][2]: 防空导弹在k时刻的空间位置,描述导弹弹道 (km)
k*tt : 防空导弹从发射到遭遇目标的时间 (s)
description:
假设:
目标相对舰船初始坐标为(100 100 0.01),航向角 -45° 航速为0.85km/s;
忽略舰船初始速度对防空导弹运动的影响;
防空导弹有效杀伤半径为50m,导弹速度为0.85km/s。

*/
#include 
#include 
#include 
#include 
#include 
#include 
#include 
using namespace std;
#define pi 3.1415926
#define g 9.8

struct result
{
double pmr0[10000][3];
double tm;
int k0;
};

struct result tra(double pdr_0[] double vm double vd double t_up double n_max double rk)
{
struct result rat;

double pmr[10000][3] = { 0 };
double pdr[10000][3] = { 0 };
double tt = 0.01; //仿真步长
double km = 3; //比例导引系数
double Sm = vm * tt;
double Sd = vd * tt;
int k = 1;

for (int i = 0; i<3 ; i++)
{
pdr[0][i] = pdr_0[i];
}

/*垂直段弹道*/
while (k*tt < t_up)
{
pmr[k][0] = pmr[k-1][0];
pmr[k][1] = pmr[k-1][1];
pmr[k][2] = pmr[k-1][2] + vm*tt;
pdr[k][0] = pdr[k-1][0] - vd*cos(pi/4)*tt; 
pdr[k][1] = pdr[k-1][1] - vd*sin(pi/4)*tt;
pdr[k][2] = pdr[k-1][2];
k++;
}

k--;

/*转弯段弹道*/

int k1 = 1;
double pm1r[10000][3] = { 0 };
double ptr[10000][3] = { 0 };
double theta_limit = 0.01*pi/180;
double theta[10000] = { 0 };
double theta0 = asin((pdr[k-1][2] - pmr[k-1][2]) / sqrt(pow((pdr[k-1][0]-pmr[k-1][0])2)
+ pow((pdr[k-1][1] - pmr[k-1][1]) 2) + pow((pdr[k-1][2] - pmr[k-1][2]) 2)));

theta[0] = 0;
theta[k1] = pi/2;

ptr[k1][0] = cos(theta0*pi / 180)*(pdr[k][0] - pmr[k][0]) - sin(theta0*pi / 180)*(pdr[k][1] - pmr[k][1]);
ptr[k1][1] = sin(theta0*pi / 180)*(pdr[k][0] - pmr[k][0]) + cos(theta0*pi / 180)*(pdr[k][1] - pmr[k][1]);
ptr[k1][2] = pdr[k][2] - pmr[k][2];
double xm_up = pmr[k][0];
double ym_up = pmr[k][1];
double zm_up = pmr[k][2];

double vm_max = 1.19; //防空导弹最大速度
double kc = 30; //调整系数
double theta_h = kc*n_max*g*vm /(pow(vm_max2));

while ((theta[k1] - theta0) > theta_limit)
{
double cospha = ptr[k1][1] / sqrt(pow(ptr[k1][0] 2) + pow(ptr[k1][1] 2));
double sinpha = ptr[k1][0] / sqrt(pow(ptr[k1][0] 2) + pow(ptr[k1][1] 2));

theta[k1 + 1] = theta[k1] - theta_h*tt;
pm1r[k1+1][0] = 0;
pm1r[k1+1][1] = pm1r[k1][1] + vm*cos(theta[k1])*tt;
pm1r[k1+1][2] = pm1r[k1][2] + vm*sin(theta[k1])*tt;

pdr[k][0] = pdr[k-1][0] - vd*cos(pi / 4)*tt;
pdr[k][1] = pdr[k-1][1] - vd*sin(pi / 4)*tt;
pdr[k][2] = pdr[k-1][2];

ptr[k1 + 1][0] = cospha*(pdr[k][0] - xm_up) - sinpha*(pdr[k][1] - ym_up);
ptr[k1 + 1][1] = sinpha*(pdr[k][0] - xm_up) + cospha*(pdr[k][1] - ym_up);
ptr[k1 + 1][2] = pdr[k][2] - zm_up;

pmr[k1 + 1][0] = cospha*pm1r[k1][0] + sinpha*pm1r[k1][1] + xm_up;
pmr[k1 + 1][1] = -sinpha*pm1r[k1][0] + cospha*pm1r[k1][1] + ym_

 属性            大小     日期    时间   名称
----------- ---------  ---------- -----  ----
     目录           0  2019-04-15 17:19  Project2\
     目录           0  2019-01-25 17:09  Project2\Debug\
     文件      455168  2018-04-22 02:19  Project2\Debug\Matlab2c.dll
     文件      110592  2019-01-25 17:12  Project2\Debug\Project2.exe
     文件      658272  2019-01-25 17:12  Project2\Debug\Project2.ilk
     文件        1078  2019-01-25 17:12  Project2\Debug\Project2.log
     文件     1372160  2019-01-25 17:12  Project2\Debug\Project2.pdb
     目录           0  2019-01-25 17:12  Project2\Debug\Project2.tlog\
     文件        1074  2019-01-25 17:09  Project2\Debug\Project2.tlog\cl.command.1.tlog
     文件       26120  2019-01-25 17:09  Project2\Debug\Project2.tlog\CL.read.1.tlog
     文件         492  2019-01-25 17:09  Project2\Debug\Project2.tlog\CL.write.1.tlog
     文件        2344  2019-01-25 17:12  Project2\Debug\Project2.tlog\link.command.1.tlog
     文件        2584  2019-01-25 17:12  Project2\Debug\Project2.tlog\link.read.1.tlog
     文件         512  2019-01-25 17:12  Project2\Debug\Project2.tlog\link.write.1.tlog
     文件         176  2019-01-25 17:12  Project2\Debug\Project2.tlog\Project2.lastbuildstate
     文件      255434  2019-01-25 17:09  Project2\Debug\trajectory.obj
     文件      486400  2019-01-25 17:09  Project2\Debug\vc120.idb
     文件      413696  2019-01-25 17:09  Project2\Debug\vc120.pdb
     文件      209271  2019-01-25 17:12  Project2\out.txt
     文件     8257536  2019-04-15 17:19  Project2\Project2.sdf
     文件         961  2019-01-16 21:51  Project2\Project2.sln
     文件       26624  2019-04-15 17:19  Project2\Project2.v12.suo
     文件        3713  2019-01-25 17:12  Project2\Project2.vcxproj
     文件         951  2019-01-17 17:38  Project2\Project2.vcxproj.filters
     文件       30208  2019-01-18 11:44  Project2\Thumbs.db
     文件        7219  2019-01-25 14:34  Project2\trajectory.cpp

评论

共有 条评论