⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 airview.cpp

📁 自己做的一个雷达仿真的程序
💻 CPP
📖 第 1 页 / 共 4 页
字号:

                     int b,c,d;
		             for(i=1;i<500;i++)
					 {
                       if(i<=time1 )
					   {
			          	 b=0;
				         c=0;
				         d=0;
					   }                                  //将整个时间段分成三部分:机动前,机动中,机动后
			           else if(i>time1 && i<time2)
					   { 
				         b=1;
				         c=0;
				         d=0;
					   }
		               else
					   {
				         b=0;
				         c=1;
				         d=1;
					   }

                       m_pDoc->AirMB[hi][i].x=x0+mvx*i*T+
				                  b*max*pow(T*(i-time1),2)/2+
								  c*max*pow(T*(time2-time1),2)/2+
								  d*max*T*(i-time2)*T*
								  (time2-time1)+Q1*normrnd[i];
                       m_pDoc->AirMB[hi][i].y=x0+mvy*i*T+
				                  b*may*pow(T*(i-time1),2)/2+
								  c*may*pow(T*(time2-time1),2)/2+
								  d*may*T*(i-time2)*T*
								  (time2-time1)+Q2*normrnd[i];   
					   m_pDoc->AirMB[hi][i].z=0;
                       m_pDoc->AirMB[hi][i].fwj=fabs(atan(m_pDoc->AirMB[hi][i].x
			                           /m_pDoc->AirMB[hi][i].y)*180/pi);
		               m_pDoc->AirMB[hi][i].d=sqrt(pow(m_pDoc->AirMB[hi][i].x,2)+
			                             pow(m_pDoc->AirMB[hi][i].y,2));
                       m_pDoc->AirMB[hi][i].q=0;
					   m_pDoc->AirMB[hi][i].v=sd+a*i*T;
                       m_pDoc->AirMB[hi][i].vx=fabs(mvx);
					   m_pDoc->AirMB[hi][i].vy=fabs(mvy);
					   m_pDoc->AirMB[hi][i].vz=0;
					   m_pDoc->AirMB[hi][i].a=a;
					   m_pDoc->AirMB[hi][i].ax=fabs(max);
					   m_pDoc->AirMB[hi][i].ay=fabs(may);
					   m_pDoc->AirMB[hi][i].az=0;
		               m_pDoc->AirMB[hi][i].tflag=false;
			           m_pDoc->AirMB[hi][i].lxflag=1;
		               m_pDoc->AirMB[hi][i].mbph=m_pDoc->AirMB[hi][0].mbph;
                       m_pDoc->AirMB[hi][i].dwshxbz=m_pDoc->AirMB[hi][1].dwshxbz;
		
					 }
					 m_pDoc->AirMB[hi][1].bx=m_pDoc->AirMB[hi][1].x-m_pDoc->m_pt1X;
					 m_pDoc->AirMB[hi][1].by=m_pDoc->AirMB[hi][1].y-m_pDoc->m_pt1Y;
					 m_pDoc->AirMB[hi][1].d=sqrt(pow(m_pDoc->AirMB[hi][1].bx,2)+pow(m_pDoc->AirMB[hi][1].by,2));
				     m_pDoc->AirMB[hi][1].bfwj=fabs(atan(m_pDoc->AirMB[hi][1].bx/m_pDoc->AirMB[hi][1].by)*180/pi);
					}
					break;
				case 1://空中
					{
		                                                     //目标的高低角


		              double  time1=20,
                              time2=40;
                      a=200;                                          //机动目标的加速度
                      
		              
                      if(ydfx*pi/180<=-90)
					 {
	                   mvx=-sd*fabs(cos( q*pi/180)*sin( ydfx*pi/180));       //X方向目标的初始速度
                       mvy=sd*fabs(cos( q*pi/180)*cos( ydfx*pi/180));
					   max=-a*fabs(cos( q*pi/180)*sin( ydfx*pi/180)); 
					   may=a*fabs(cos( q*pi/180)*cos( ydfx*pi/180)); 
					 }
					 if(ydfx*pi/180<0&&ydfx*pi/180>-90)
					 {
                       mvx=-sd*fabs(cos( q*pi/180)*sin( ydfx*pi/180)); 
					   max=-a*fabs(cos( q*pi/180)*sin( ydfx*pi/180)); 
	                   mvy=-sd*fabs(cos( q*pi/180)*cos( ydfx*pi/180));
					   may=-a*fabs(cos( q*pi/180)*cos( ydfx*pi/180)); 
					 }
                     if(ydfx*pi/180>=0&&ydfx*pi/180<=90)           
					 {
	                   mvx=sd*fabs(cos( q*pi/180)*sin( ydfx*pi/180));
					    max=a*fabs(cos( q*pi/180)*sin( ydfx*pi/180));
	                   mvy=-sd*fabs(cos( q*pi/180)*cos( ydfx*pi/180));      //y方向目标的初始速度
					   may=-a*fabs(cos( q*pi/180)*cos( ydfx*pi/180));
					 }
	                 if(ydfx*pi/180>90)
					 {
                       mvx=sd*fabs(cos( q*pi/180)*sin( ydfx*pi/180));
					   max=a*fabs(cos( q*pi/180)*sin( ydfx*pi/180));
	                   mvy=sd*fabs(cos( q*pi/180)*cos( ydfx*pi/180));
					   may=a*fabs(cos( q*pi/180)*cos( ydfx*pi/180));
					 } 
                       mvz=sd*sin(q);                           //z方向目标的初始速度    
                       maz=a*sin(q);


	
		            int b,c,d;
	           	    for(i=1;i<500;i++)
					{
                      if(i<time1 || i==time1)
					  {
				       b=0;
				       c=0;
				       d=0;
					  }                                  //将整个时间段分成三部分:机动前,机动中,机动后
			          else if(i>time1 && i<time2)
					  { 
				       b=1;
				       c=0;
			           d=0;
					  }
		        	  else
					  {
				       b=0;
				       c=1;
				       d=1;
					  }

                      m_pDoc->AirMB[hi][i].x=x0+mvx*i*T+b*max*pow(T*(i-time1),2)/2+c*max*pow(T*(time2-time1),2)/2+d*max*T*(i-time2)*T*(time2-time1)+Q1*normrnd[i];
                      m_pDoc->AirMB[hi][i].y=y0+mvy*i*T+b*may*pow(T*(i-time1),2)/2+c*may*pow(T*(time2-time1),2)/2+d*may*T*(i-time2)*T*(time2-time1)+Q2*normrnd[i]; 
			          m_pDoc->AirMB[hi][i].z=z0+mvz*i*T+b*maz*pow(T*(i-time1),2)/2+c*maz*pow(T*(time2-time1),2)/2+d*maz*T*(i-time2)*T*(time2-time1)+Q3*normrnd[i];
					  m_pDoc->AirMB[hi][i].fwj=fabs(atan(m_pDoc->AirMB[hi][i].x
			                           /m_pDoc->AirMB[hi][i].y)*180/pi);
		            
		              m_pDoc->AirMB[hi][i].d=sqrt(pow(m_pDoc->AirMB[hi][i].x,2)+
			                             pow(m_pDoc->AirMB[hi][i].y,2)+pow(m_pDoc->AirMB[hi][i].z,2));
                      m_pDoc->AirMB[hi][i].q=q;
					  m_pDoc->AirMB[hi][i].v=sd+a*i*T;
                      m_pDoc->AirMB[hi][i].vx=fabs(mvx);
					  m_pDoc->AirMB[hi][i].vy=fabs(mvy);
					  m_pDoc->AirMB[hi][i].vz=mvz;
					  m_pDoc->AirMB[hi][i].a=a;
					  m_pDoc->AirMB[hi][i].ax=fabs(max);
					  m_pDoc->AirMB[hi][i].ay=fabs(may);
					  m_pDoc->AirMB[hi][i].az=fabs(maz);
		              m_pDoc->AirMB[hi][i].tflag=false;
			          m_pDoc->AirMB[hi][i].lxflag=2;
					  m_pDoc->AirMB[hi][i].mbph=m_pDoc->AirMB[hi][0].mbph;
                       m_pDoc->AirMB[hi][i].dwshxbz=m_pDoc->AirMB[hi][1].dwshxbz;
					
					}
					m_pDoc->AirMB[hi][1].bx=m_pDoc->AirMB[hi][1].x-m_pDoc->m_pt1X;
					 m_pDoc->AirMB[hi][1].by=m_pDoc->AirMB[hi][1].y-m_pDoc->m_pt1Y;
					 m_pDoc->AirMB[hi][1].d=sqrt(pow(m_pDoc->AirMB[hi][1].bx,2)+pow(m_pDoc->AirMB[hi][1].by,2)+pow(m_pDoc->AirMB[hi][1].z,2));
				     m_pDoc->AirMB[hi][1].bfwj=fabs(atan(m_pDoc->AirMB[hi][1].bx/m_pDoc->AirMB[hi][1].by)*180/pi);
					}
					break;
				case 2://水下
					{
	
		               z0=-1500;                                     //z方向机动目标的初始坐标
		                                                       //目标的高低角
		               double time1=20,
                              time2=40;
                       a=5;                                          //机动目标的加速度
                       
					    if(ydfx*pi/180<=-90)
					 {
	                   mvx=-sd*fabs(cos( q*pi/180)*sin( ydfx*pi/180));       //X方向目标的初始速度
                       mvy=sd*fabs(cos( q*pi/180)*cos( ydfx*pi/180));
					   max=-a*fabs(cos( q*pi/180)*sin( ydfx*pi/180)); 
					   may=a*fabs(cos( q*pi/180)*cos( ydfx*pi/180)); 
					 }
					 if(ydfx*pi/180<0&&ydfx*pi/180>-90)
					 {
                       mvx=-sd*fabs(cos( q*pi/180)*sin( ydfx*pi/180)); 
					   max=-a*fabs(cos( q*pi/180)*sin( ydfx*pi/180)); 
	                   mvy=-sd*fabs(cos( q*pi/180)*cos( ydfx*pi/180));
					   may=-a*fabs(cos( q*pi/180)*cos( ydfx*pi/180)); 
					 }
                     if(ydfx*pi/180>=0&&ydfx*pi/180<=90)           
					 {
	                   mvx=sd*fabs(cos( q*pi/180)*sin( ydfx*pi/180));
					    max=a*fabs(cos( q*pi/180)*sin( ydfx*pi/180));
	                   mvy=-sd*fabs(cos( q*pi/180)*cos( ydfx*pi/180));      //y方向目标的初始速度
					   may=-a*fabs(cos( q*pi/180)*cos( ydfx*pi/180));
					 }
	                 if(ydfx*pi/180>90)
					 {
                       mvx=sd*fabs(cos( q*pi/180)*sin( ydfx*pi/180));
					   max=a*fabs(cos( q*pi/180)*sin( ydfx*pi/180));
	                   mvy=sd*fabs(cos( q*pi/180)*cos( ydfx*pi/180));
					   may=a*fabs(cos( q*pi/180)*cos( ydfx*pi/180));
					 } 
                       mvz=sd*sin(q);                           //z方向目标的初始速度    
                       maz=a*sin(q);

		            
	
		            int b,c,d;
		            for(i=1;i<50;i++)
					{
                       if(i<time1 || i==time1)
					   {
				          b=0;
				          c=0;
				          d=0;
					   }                                  //将整个时间段分成三部分:机动前,机动中,机动后
			           else if(i>time1 && i<time2)
					   { 
				          b=1;
				          c=0;
				          d=0;
					   }
			           else
					   {
				          b=0;
				          c=1;
				          d=1;
					   }
                      
                      m_pDoc->AirMB[hi][i].x=x0+mvx*i*T+b*max*pow(T*(i-time1),2)/2+c*max*pow(T*(time2-time1),2)/2+d*max*T*(i-time2)*T*(time2-time1)+Q1*normrnd[i];
                      m_pDoc->AirMB[hi][i].y=y0+mvy*i*T+b*may*pow(T*(i-time1),2)/2+c*may*pow(T*(time2-time1),2)/2+d*may*T*(i-time2)*T*(time2-time1)+Q2*normrnd[i]; 
			          m_pDoc->AirMB[hi][i].z=z0+mvz*i*T+b*maz*pow(T*(i-time1),2)/2+c*maz*pow(T*(time2-time1),2)/2+d*maz*T*(i-time2)*T*(time2-time1)+Q3*normrnd[i];
					  m_pDoc->AirMB[hi][i].fwj=fabs(atan(m_pDoc->AirMB[hi][i].x
			                           /m_pDoc->AirMB[hi][i].y)*180/pi);
		            
		              m_pDoc->AirMB[hi][i].d=sqrt(pow(m_pDoc->AirMB[hi][i].x,2)+
			                             pow(m_pDoc->AirMB[hi][i].y,2)+pow(m_pDoc->AirMB[hi][i].z,2));
                      m_pDoc->AirMB[hi][i].q=q;
					  m_pDoc->AirMB[hi][i].v=sd+a*i*T;
                      m_pDoc->AirMB[hi][i].vx=fabs(mvx);
					  m_pDoc->AirMB[hi][i].vy=fabs(mvy);
					  m_pDoc->AirMB[hi][i].vz=mvz;
					  m_pDoc->AirMB[hi][i].a=a;
					  m_pDoc->AirMB[hi][i].ax=fabs(max);
					  m_pDoc->AirMB[hi][i].ay=fabs(may);
					  m_pDoc->AirMB[hi][i].az=fabs(maz);
		              m_pDoc->AirMB[hi][i].tflag=false;
			          m_pDoc->AirMB[hi][i].lxflag=3;
					  m_pDoc->AirMB[hi][i].mbph=m_pDoc->AirMB[hi][0].mbph;
                       m_pDoc->AirMB[hi][i].dwshxbz=m_pDoc->AirMB[hi][1].dwshxbz;
					} 
					m_pDoc->AirMB[hi][1].bx=m_pDoc->AirMB[hi][1].x-m_pDoc->m_pt1X;
					 m_pDoc->AirMB[hi][1].by=m_pDoc->AirMB[hi][1].y-m_pDoc->m_pt1Y;
					 m_pDoc->AirMB[hi][1].d=sqrt(pow(m_pDoc->AirMB[hi][1].bx,2)+pow(m_pDoc->AirMB[hi][1].by,2)+pow(m_pDoc->AirMB[hi][1].z,2));
				     m_pDoc->AirMB[hi][1].bfwj=fabs(atan(m_pDoc->AirMB[hi][1].bx/m_pDoc->AirMB[hi][1].by)*180/pi);

					}

					break;
				}
			}
			break;
	    
		
	
		//蛇形机动
		case 4:
			{
				switch(kjshxsel)
				{
				case 0: //水面
					{
            double W[5]={0.5,1.0,1.5,2,2.5};
            sd=30000;

            int m=-1;
	        double r,xr,yr,ch,js,w;
            int n=0;
	        
            for(j=0;j<50;j++)
			{
              m=m*(-1);
              w=m*W[j%5];
              r=fabs(sd/w);
              xr=x0-r*cos(ydfx*pi/180);
              yr=y0-r*sin(ydfx*pi/180);
              for(i=1;i<50;i++)
			  {
            
                 m_pDoc->AirMB[hi][n].x=xr+r*cos(ydfx*pi/180+w*i*T)+Q1*normrnd[i];
                 m_pDoc->AirMB[hi][n].y=yr+r*sin(ydfx*pi/180+w*i*T)+Q2*normrnd[i];		
                 m_pDoc->AirMB[hi][n].fwj=fabs(atan(m_pDoc->AirMB[hi][i].x
			                           /m_pDoc->AirMB[hi][i].y)*180/pi);
		         m_pDoc->AirMB[hi][n].d =sqrt(pow(m_pDoc->AirMB[hi][n].x,2)+pow(m_pDoc->AirMB[hi][n].y,2));
                 m_pDoc->AirMB[hi][n].q=0;
				 m_pDoc->AirMB[hi][n].v=sd;
                 //m_pDoc->AirMB[hi][i].vx=fabs(mvx);
				 //m_pDoc->AirMB[hi][i].vy=fabs(mvy);
				 m_pDoc->AirMB[hi][n].vz=0;
				 m_pDoc->AirMB[hi][n].a=0;
				 m_pDoc->AirMB[hi][n].ax=0;
				 m_pDoc->AirMB[hi][n].ay=0;
				 m_pDoc->AirMB[hi][n].az=0;
				 m_pDoc->AirMB[hi][n].tflag=false;
                 m_pDoc->AirMB[hi][n].lxflag=1;
				 m_pDoc->AirMB[hi][n].mbph=m_pDoc->AirMB[hi][0].mbph;
                       m_pDoc->AirMB[hi][n].dwshxbz=m_pDoc->AirMB[hi][1].dwshxbz;
			
			     n=n+1;
                 ch=pi-fabs(w)*i*T;
                 js=fabs(w)*T; 
                 if(ch<js)
				 {
                   x0=xr-r*cos(ydfx*pi/180);
                   y0=yr-r*sin(ydfx*pi/180);
                   break;
				 }
			
			  }


			}
                 m_pDoc->AirMB[hi][1].bx=m_pDoc->AirMB[hi][1].x-m_pDoc->m_pt1X;
					 m_pDoc->AirMB[hi][1].by=m_pDoc->AirMB[hi][1].y-m_pDoc->m_pt1Y;
					 m_pDoc->AirMB[hi][1].d=sqrt(pow(m_pDoc->AirMB[hi][1].bx,2)+pow(m_pDoc->AirMB[hi][1].by,2));
				     m_pDoc->AirMB[hi][1].bfwj=fabs(atan(m_pDoc->AirMB[hi][1].bx/m_pDoc->AirMB[hi][1].by)*180/pi);       
					}
					break;
				case 1://空中
					{
					}
					break;
				case 2://水下
					{
					}
					break;
				}
            }
			break;
		case 5://合成运动  x方向匀速 y方向匀加速
			{
				switch(kjshxsel)
				{
				case 0://水面目标
					{
	                  a=300;                                      //目标的初始加速度 
                      ydfx=pi/4;                                   //目标的初始航向角
	                  if(ydfx*pi/180>=0&&ydfx*pi/180<90)
					  {
					     mvx=sd*sin(ydfx*pi/180);      
	                     mvy=-sd*cos(ydfx*pi/180);      
	                     may=-a;                           
					  }
                      if(ydfx*pi/180>=90)
					  {
					     mvx=sd*sin(ydfx*pi/180);      
	                     mvy=sd*cos(ydfx*pi/180);      
	                     may=a;                           
					  }
					  if(ydfx*pi/180>=-90&&ydfx*pi/180<0)
					  {
					     mvx=-sd*sin(ydfx*pi/180);      
	                     mvy=-sd*cos(ydfx*pi/180);      
	                     may=-a;                           
					  }
					  if(ydfx*pi/180<-90)
					  {

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -