更新:1、修复全部C4819 / C4018 / C4244警告;

2、更新项目文档;
This commit is contained in:
2026-09-07 14:29:24 +08:00
parent f438ac53d9
commit 5f820987a9
37 changed files with 304 additions and 272 deletions
+1 -1
View File
@@ -1,4 +1,4 @@
#include "coor_trans.h"
#include "coor_trans.h"
#include <cmath>
#include <cstring>
#include <vector>
+1 -1
View File
@@ -1,4 +1,4 @@
#ifndef COOR_TRANS_H
#ifndef COOR_TRANS_H
#define COOR_TRANS_H
#include "parameters.h"
+4 -4
View File
@@ -1,4 +1,4 @@
#include "data_process.h"
#include "data_process.h"
#include <cstring>
#include <vector>
#include <cmath>
@@ -246,7 +246,7 @@ int Data_Process:: track_delete(int delete_track_num, //手动
{
for (int i=0;i<delete_track_num ;i++)
{
for (int j=0;j<trust_track.size();j++)
for (size_t j=0;j<trust_track.size();j++)
{
if(trust_track[j].Track_Index == delete_track_index[i])
{
@@ -265,7 +265,7 @@ int Data_Process:: track_delete(int delete_track_num, //手动
int Data_Process:: tracking_start(int track_index) //需要手动转入TAS跟踪的航迹号
{
for ( int i=0; i<trust_track.size();i++)
for ( size_t i=0; i<trust_track.size();i++)
if(trust_track[i].Track_Index==track_index)
{
trust_track[i].manual_tracking_flag = 1;
@@ -278,7 +278,7 @@ int Data_Process:: tracking_start(int track_index) //需要手动
int Data_Process:: tracking_stop(int track_index) //需要手动转入TAS跟踪的航迹号
{
for ( int i=0; i<trust_track.size();i++){
for ( size_t i=0; i<trust_track.size();i++){
if(trust_track[i].Track_Index==track_index)
{
trust_track[i].manual_tracking_flag = 0;
+1 -1
View File
@@ -1,4 +1,4 @@
#ifndef DATA_PROCESS_H
#ifndef DATA_PROCESS_H
#define DATA_PROCESS_H
#pragma once
#include "data_process_class_dll.h"
@@ -1,4 +1,4 @@
#ifndef DATA_PROCESS_CLASS_DLL_LIBRARY
#ifndef DATA_PROCESS_CLASS_DLL_LIBRARY
#define DATA_PROCESS_CLASS_DLL_LIBRARY
#endif
#include "data_process_class_dll.h"
@@ -1,4 +1,4 @@
#pragma once
#pragma once
#ifndef DATA_PROCESS_CLASS_DLL_H
#define DATA_PROCESS_CLASS_DLL_H
@@ -1,4 +1,4 @@
#ifndef DATA_PROCESS_CLASS_DLL_GLOBAL_H
#ifndef DATA_PROCESS_CLASS_DLL_GLOBAL_H
#define DATA_PROCESS_CLASS_DLL_GLOBAL_H
#if defined(DATA_PROCESS_CLASS_DLL_LIBRARY)
+40 -40
View File
@@ -1,4 +1,4 @@
#include "dot_coh.h"
#include "dot_coh.h"
#include <cmath>
#include <cstring>
#include <vector>
@@ -16,18 +16,18 @@ int Dot_Coh::dot_coh_process(std::vector <PointRecv> *data_input,
{
if( (*data_input)[loop_of_point].Use_Flag!=1)
{
float point_0_R=(*data_input)[loop_of_point].Range;
float point_0_V=(*data_input)[loop_of_point].Velocity;
float point_0_F=(*data_input)[loop_of_point].Azimuth;
float point_0_A=(*data_input)[loop_of_point].Amplitude;
float point_0_R=static_cast<float>((*data_input)[loop_of_point].Range);
float point_0_V=static_cast<float>((*data_input)[loop_of_point].Velocity);
float point_0_F=static_cast<float>((*data_input)[loop_of_point].Azimuth);
float point_0_A=static_cast<float>((*data_input)[loop_of_point].Amplitude);
for (unsigned int i=loop_of_point+1;i<data_input->size();i++)
{
if((*data_input)[loop_of_point].Use_Flag!=1 && (*data_input)[i].Use_Flag!=1)
{
float point_1_R=(*data_input)[i].Range;
float point_1_V=(*data_input)[i].Velocity;
float point_1_F=(*data_input)[i].Azimuth;
float point_1_A=(*data_input)[i].Amplitude;
float point_1_R=static_cast<float>((*data_input)[i].Range);
float point_1_V=static_cast<float>((*data_input)[i].Velocity);
float point_1_F=static_cast<float>((*data_input)[i].Azimuth);
float point_1_A=static_cast<float>((*data_input)[i].Amplitude);
//凝聚条件: 距离、方位接近
if(Work_Parameter.work_mode == 0)
@@ -36,10 +36,10 @@ int Dot_Coh::dot_coh_process(std::vector <PointRecv> *data_input,
if( (fabs(point_0_R-point_1_R)<=DOT_COH_RANGE && delta_F <=DOT_COH_AZI/180.0*PI && fabs(point_0_V-point_1_V)<=DOT_COH_V)//
&& point_0_A <point_1_A )//
{
point_0_R=(*data_input)[i].Range;
point_0_V=(*data_input)[i].Velocity;
point_0_A=(*data_input)[i].Amplitude;
point_0_F=(*data_input)[i].Azimuth;
point_0_R=static_cast<float>((*data_input)[i].Range);
point_0_V=static_cast<float>((*data_input)[i].Velocity);
point_0_A=static_cast<float>((*data_input)[i].Amplitude);
point_0_F=static_cast<float>((*data_input)[i].Azimuth);
(*data_input)[loop_of_point].Use_Flag=1;
}
else if( (fabs(point_0_R-point_1_R)<=DOT_COH_RANGE && delta_F <=DOT_COH_AZI/180.0*PI && fabs(point_0_V-point_1_V)<=DOT_COH_V)//
@@ -54,10 +54,10 @@ int Dot_Coh::dot_coh_process(std::vector <PointRecv> *data_input,
if( (fabs(point_0_R-point_1_R)<=DOT_COH_RANGE && delta_F <=DOT_COH_AZI/180.0*PI )//
&& point_0_A <point_1_A )//
{
point_0_R=(*data_input)[i].Range;
point_0_V=(*data_input)[i].Velocity;
point_0_A=(*data_input)[i].Amplitude;
point_0_F=(*data_input)[i].Azimuth;
point_0_R=static_cast<float>((*data_input)[i].Range);
point_0_V=static_cast<float>((*data_input)[i].Velocity);
point_0_A=static_cast<float>((*data_input)[i].Amplitude);
point_0_F=static_cast<float>((*data_input)[i].Azimuth);
(*data_input)[loop_of_point].Use_Flag=1;
}
else if( (fabs(point_0_R-point_1_R)<=DOT_COH_RANGE && delta_F <=DOT_COH_AZI/180.0*PI )//
@@ -88,7 +88,7 @@ int Dot_Coh::dot_coh_process(std::vector <PointRecv> *data_input,
}
}
for (int i=0;i<data_input->size();i++) //data_buffer_2 ---> point_recv
for (size_t i=0;i<data_input->size();i++) //data_buffer_2 ---> point_recv
{
(*point_recv).push_back((*data_input)[i]);
}
@@ -106,20 +106,20 @@ int Dot_Coh::dot_coh_process_buff( std::vector <PointRecv> *data_input,
//1.1 data_input、data_input_buff中的数据放在一起
std::vector <PointRecv> data_tmp;
for (int i=0;i<data_input_buff.size();i++)
for (size_t i=0;i<data_input_buff.size();i++)
{
data_tmp.push_back(data_input_buff[i]);
data_tmp[data_tmp.size()-1].point_section_asso = 1;
}
for (int i=0;i<data_input->size();i++)
for (size_t i=0;i<data_input->size();i++)
{
data_tmp.push_back((*data_input)[i]);
data_tmp[data_tmp.size()-1].point_section_asso = 2;
}
// //去除点迹中,1km以内,SNR小于20dB的点
// for (int i=0;i<data_input->size();i++)
// for (size_t i=0;i<data_input->size();i++)
// {
// if((*data_input)[i].Range > 1000 || (*data_input)[i].snr >= 20){
// data_tmp.push_back((*data_input)[i]);
@@ -140,18 +140,18 @@ int Dot_Coh::dot_coh_process_buff( std::vector <PointRecv> *data_input,
{
if( data_tmp[loop_of_point].Use_Flag!=1)
{
float point_0_R=data_tmp[loop_of_point].Range;
float point_0_V=data_tmp[loop_of_point].Velocity;
float point_0_F=data_tmp[loop_of_point].Azimuth;
float point_0_A=data_tmp[loop_of_point].Amplitude;
float point_0_R=static_cast<float>(data_tmp[loop_of_point].Range);
float point_0_V=static_cast<float>(data_tmp[loop_of_point].Velocity);
float point_0_F=static_cast<float>(data_tmp[loop_of_point].Azimuth);
float point_0_A=static_cast<float>(data_tmp[loop_of_point].Amplitude);
for (unsigned int i=loop_of_point+1;i<data_tmp.size();i++)
{
if(data_tmp[loop_of_point].Use_Flag!=1 && data_tmp[i].Use_Flag!=1)
{
float point_1_R=data_tmp[i].Range;
float point_1_V=data_tmp[i].Velocity;
float point_1_F=data_tmp[i].Azimuth;
float point_1_A=data_tmp[i].Amplitude;
float point_1_R=static_cast<float>(data_tmp[i].Range);
float point_1_V=static_cast<float>(data_tmp[i].Velocity);
float point_1_F=static_cast<float>(data_tmp[i].Azimuth);
float point_1_A=static_cast<float>(data_tmp[i].Amplitude);
//凝聚条件: 距离、方位接近
if(Work_Parameter.work_mode == 0)
@@ -160,10 +160,10 @@ int Dot_Coh::dot_coh_process_buff( std::vector <PointRecv> *data_input,
if( (fabs(point_0_R-point_1_R)<=DOT_COH_RANGE && delta_F <=DOT_COH_AZI/180.0*PI && fabs(point_0_V-point_1_V)<=DOT_COH_V)//
&& point_0_A <point_1_A )//
{
point_0_R=data_tmp[i].Range;
point_0_V=data_tmp[i].Velocity;
point_0_A=data_tmp[i].Amplitude;
point_0_F=data_tmp[i].Azimuth;
point_0_R=static_cast<float>(data_tmp[i].Range);
point_0_V=static_cast<float>(data_tmp[i].Velocity);
point_0_A=static_cast<float>(data_tmp[i].Amplitude);
point_0_F=static_cast<float>(data_tmp[i].Azimuth);
data_tmp[loop_of_point].Use_Flag=1;
}
else if( (fabs(point_0_R-point_1_R)<=DOT_COH_RANGE && delta_F <=DOT_COH_AZI/180.0*PI && fabs(point_0_V-point_1_V)<=DOT_COH_V)//
@@ -178,10 +178,10 @@ int Dot_Coh::dot_coh_process_buff( std::vector <PointRecv> *data_input,
if( (fabs(point_0_R-point_1_R)<=DOT_COH_RANGE && delta_F <=DOT_COH_AZI/180.0*PI )//
&& point_0_A <point_1_A )//
{
point_0_R=data_tmp[i].Range;
point_0_V=data_tmp[i].Velocity;
point_0_A=data_tmp[i].Amplitude;
point_0_F=data_tmp[i].Azimuth;
point_0_R=static_cast<float>(data_tmp[i].Range);
point_0_V=static_cast<float>(data_tmp[i].Velocity);
point_0_A=static_cast<float>(data_tmp[i].Amplitude);
point_0_F=static_cast<float>(data_tmp[i].Azimuth);
data_tmp[loop_of_point].Use_Flag=1;
}
else if( (fabs(point_0_R-point_1_R)<=DOT_COH_RANGE && delta_F <=DOT_COH_AZI/180.0*PI )//
@@ -213,7 +213,7 @@ int Dot_Coh::dot_coh_process_buff( std::vector <PointRecv> *data_input,
}
//1.5 将data_tmp中凝聚后的点再分到 data_input_buff和data_input中
for (int i=0;i<data_tmp.size();i++)
for (size_t i=0;i<data_tmp.size();i++)
{
if(data_tmp[i].point_section_asso==1)
{
@@ -229,7 +229,7 @@ int Dot_Coh::dot_coh_process_buff( std::vector <PointRecv> *data_input,
//2.data_input_buff数据输出给point_recv
for (int i=0;i<data_input_buff.size();i++)
for (size_t i=0;i<data_input_buff.size();i++)
{
(*point_recv).push_back(data_input_buff[i]);
}
@@ -237,7 +237,7 @@ int Dot_Coh::dot_coh_process_buff( std::vector <PointRecv> *data_input,
std::vector<PointRecv>().swap(data_input_buff);
//3.data_input数据输出给data_input_buff
for (int i=0;i<data_input->size();i++)
for (size_t i=0;i<data_input->size();i++)
{
data_input_buff.push_back((*data_input)[i]);
}
+1 -1
View File
@@ -1,4 +1,4 @@
#ifndef DOT_COH_H
#ifndef DOT_COH_H
#define DOT_COH_H
#include "data_process_class_dll.h"
#include "parameters.h"
+16 -16
View File
@@ -1,4 +1,4 @@
#include "dot_coh_tas.h"
#include "dot_coh_tas.h"
#include <cmath>
#include <cstring>
#include <vector>
@@ -12,32 +12,32 @@ int Dot_Coh_TAS::dot_coh_tas_process(std::vector <PointRecv> *dat
return 1;
}
for (int loop_of_point=0; loop_of_point<data_input->size()-1;loop_of_point++ )
for (size_t loop_of_point=0; loop_of_point<data_input->size()-1;loop_of_point++ )
{
if( (*data_input)[loop_of_point].Use_Flag!=1)
{
float point_0_R=(*data_input)[loop_of_point].Range;
float point_0_V=(*data_input)[loop_of_point].Velocity;
float point_0_F=(*data_input)[loop_of_point].Azimuth;
float point_0_A=(*data_input)[loop_of_point].Amplitude;
for ( int i=loop_of_point+1;i<(*data_input).size();i++)
float point_0_R=static_cast<float>((*data_input)[loop_of_point].Range);
float point_0_V=static_cast<float>((*data_input)[loop_of_point].Velocity);
float point_0_F=static_cast<float>((*data_input)[loop_of_point].Azimuth);
float point_0_A=static_cast<float>((*data_input)[loop_of_point].Amplitude);
for ( size_t i=loop_of_point+1;i<(*data_input).size();i++)
{
if((*data_input)[loop_of_point].Use_Flag!=1 && (*data_input)[i].Use_Flag!=1)
{
float point_1_R=(*data_input)[i].Range;
float point_1_V=(*data_input)[i].Velocity;
float point_1_F=(*data_input)[i].Azimuth;
float point_1_A=(*data_input)[i].Amplitude;
float point_1_R=static_cast<float>((*data_input)[i].Range);
float point_1_V=static_cast<float>((*data_input)[i].Velocity);
float point_1_F=static_cast<float>((*data_input)[i].Azimuth);
float point_1_A=static_cast<float>((*data_input)[i].Amplitude);
//凝聚条件: 距离、方位接近
float delta_F = fabs(point_0_F-point_1_F)<2*PI-fabs(point_0_F-point_1_F) ? fabs(point_0_F-point_1_F) :2*PI-fabs(point_0_F-point_1_F);
if( (fabs(point_0_R-point_1_R)<=DOT_COH_RANGE && delta_F <=DOT_COH_AZI/180.0*PI && fabs(point_0_V-point_1_V)<=DOT_COH_V)
&& point_0_A <point_1_A )
{
point_0_R=(*data_input)[i].Range;
point_0_V=(*data_input)[i].Velocity;
point_0_A=(*data_input)[i].Amplitude;
point_0_F=(*data_input)[i].Azimuth;
point_0_R=static_cast<float>((*data_input)[i].Range);
point_0_V=static_cast<float>((*data_input)[i].Velocity);
point_0_A=static_cast<float>((*data_input)[i].Amplitude);
point_0_F=static_cast<float>((*data_input)[i].Azimuth);
(*data_input)[loop_of_point].Use_Flag=1;
}
else if( (fabs(point_0_R-point_1_R)<=DOT_COH_RANGE && delta_F <=DOT_COH_AZI/180.0*PI && fabs(point_0_V-point_1_V)<=DOT_COH_V)
@@ -65,7 +65,7 @@ int Dot_Coh_TAS::dot_coh_tas_process(std::vector <PointRecv> *dat
}
}
for (int i=0;i<data_input->size();i++)
for (size_t i=0;i<data_input->size();i++)
{
(*point_recv_tas).push_back((*data_input)[i]);
}
+1 -1
View File
@@ -1,4 +1,4 @@
#ifndef DOT_COH_TAS_H
#ifndef DOT_COH_TAS_H
#define DOT_COH_TAS_H
#include "parameters.h"
#include "struct.h"
+1 -1
View File
@@ -1,4 +1,4 @@
#include "kalman.h"
#include "kalman.h"
#include "coor_trans.h"
#include "parameters.h"
#include <cmath>
+1 -1
View File
@@ -1,4 +1,4 @@
#ifndef KALMAN_H
#ifndef KALMAN_H
#define KALMAN_H
#include "parameters.h"
#include "struct.h"
+1 -1
View File
@@ -1,4 +1,4 @@
#ifndef PARAMETERS_H
#ifndef PARAMETERS_H
#define PARAMETERS_H
#pragma once
/**********************************雷达参数*************************************************/
+1 -1
View File
@@ -1,4 +1,4 @@
#ifndef STRUCT_H
#ifndef STRUCT_H
#define STRUCT_H
#pragma once
+17 -17
View File
@@ -1,4 +1,4 @@
#include "tas_ctrl.h"
#include "tas_ctrl.h"
#include "coor_trans.h"
#include <cmath>
#include <cstring>
@@ -55,7 +55,7 @@ void TAS_Ctrl::tas_target_add(std::vector<Trust_Track> *trust_track,
struct RadarPara Work_Parameter)
{
for (int i=0;i<trust_track->size();i++)
for (size_t i=0;i<trust_track->size();i++)
{
double r=sqrt(pow((*trust_track)[i].X[0],2)+pow((*trust_track)[i].X[3],2));
double v=sqrt(pow((*trust_track)[i].X[1],2)+pow((*trust_track)[i].X[4],2));
@@ -95,18 +95,18 @@ void TAS_Ctrl::tas_target_add(std::vector<Trust_Track> *trust_track,
coor_trans Coor_trans;
Coor_trans.cart2polar((*trust_track)[i].X[0],(*trust_track)[i].X[3],&r_output,&azmi_output);
Trust_Track_Output[*Trust_track_num_Output-1][0].Point_Sum=1;
Trust_Track_Output[*Trust_track_num_Output-1][0].Range=r_output;
Trust_Track_Output[*Trust_track_num_Output-1][0].Azimuth=azmi_output/PI*180;
Trust_Track_Output[*Trust_track_num_Output-1][0].Range=static_cast<float>(r_output);
Trust_Track_Output[*Trust_track_num_Output-1][0].Azimuth=static_cast<float>(azmi_output/PI*180);
Trust_Track_Output[*Trust_track_num_Output-1][0].Track_Index=(*trust_track)[i].Track_Index; //航迹号
Trust_Track_Output[*Trust_track_num_Output-1][0].Range_V=
sqrt((*trust_track)[i].X[1]*(*trust_track)[i].X[1]+(*trust_track)[i].X[4]*(*trust_track)[i].X[4]);
Trust_Track_Output[*Trust_track_num_Output-1][0].Amplitude=(*trust_track)[i].Amplitude;
static_cast<float>(sqrt((*trust_track)[i].X[1]*(*trust_track)[i].X[1]+(*trust_track)[i].X[4]*(*trust_track)[i].X[4]));
Trust_Track_Output[*Trust_track_num_Output-1][0].Amplitude=static_cast<float>((*trust_track)[i].Amplitude);
Trust_Track_Output[*Trust_track_num_Output-1][0].Flag_Point=(*trust_track)[i].point_flag;
Trust_Track_Output[*Trust_track_num_Output-1][0].Track_Mode=(*trust_track)[i].Track_Mode;
Trust_Track_Output[*Trust_track_num_Output-1][0].Elevation=asin((*trust_track)[i].Height/r_output)/PI*180;
Trust_Track_Output[*Trust_track_num_Output-1][0].z=(*trust_track)[i].Height+Work_Parameter.Height;
Trust_Track_Output[*Trust_track_num_Output-1][0].Elevation=static_cast<float>(asin((*trust_track)[i].Height/r_output)/PI*180);
Trust_Track_Output[*Trust_track_num_Output-1][0].z=static_cast<float>((*trust_track)[i].Height+Work_Parameter.Height);
Trust_Track_Output[*Trust_track_num_Output-1][0].Target_Type=(*trust_track)[i].Target_Type;
Trust_Track_Output[*Trust_track_num_Output-1][0].track_snr = (*trust_track)[i].snr_point;
Trust_Track_Output[*Trust_track_num_Output-1][0].track_snr = static_cast<float>((*trust_track)[i].snr_point);
break;
}
@@ -164,7 +164,7 @@ void TAS_Ctrl::tas_target_del(std::vector<Trust_Track> *trust_track,
{
//查找TAS队列里的目标是否存在
int flag=0;
for (int j=0;j<trust_track->size();j++){
for (size_t j=0;j<trust_track->size();j++){
{
if(tas_target_queue[i].Index==(*trust_track)[j].Track_Index && (*trust_track)[j].Track_Mode == 1 && (*trust_track)[j].manual_tracking_flag == 1)
{
@@ -213,17 +213,17 @@ void TAS_Ctrl::tas_target_del(std::vector<Trust_Track> *trust_track,
// coor_trans Coor_trans;
// Coor_trans.cart2polar((*trust_track)[i].X[0],(*trust_track)[i].X[3],&r_output,&azmi_output);
// Trust_Track_Output[*Trust_track_num_Output-1][0].Point_Sum=1;
// Trust_Track_Output[*Trust_track_num_Output-1][0].Range=r_output;
// Trust_Track_Output[*Trust_track_num_Output-1][0].Azimuth=azmi_output/PI*180;
// Trust_Track_Output[*Trust_track_num_Output-1][0].Range=static_cast<float>(r_output);
// Trust_Track_Output[*Trust_track_num_Output-1][0].Azimuth=static_cast<float>(azmi_output/PI*180);
// Trust_Track_Output[*Trust_track_num_Output-1][0].Track_Index=(*trust_track)[i].Track_Index; //航迹号
// Trust_Track_Output[*Trust_track_num_Output-1][0].Range_V=sqrt((*trust_track)[i].X[1]*(*trust_track)[i].X[1]+(*trust_track)[i].X[4]*(*trust_track)[i].X[4]);
// Trust_Track_Output[*Trust_track_num_Output-1][0].Amplitude=(*trust_track)[i].Amplitude;
// Trust_Track_Output[*Trust_track_num_Output-1][0].Range_V=static_cast<float>(sqrt((*trust_track)[i].X[1]*(*trust_track)[i].X[1]+(*trust_track)[i].X[4]*(*trust_track)[i].X[4]));
// Trust_Track_Output[*Trust_track_num_Output-1][0].Amplitude=static_cast<float>((*trust_track)[i].Amplitude);
// Trust_Track_Output[*Trust_track_num_Output-1][0].Flag_Point=(*trust_track)[i].point_flag;
// Trust_Track_Output[*Trust_track_num_Output-1][0].Track_Mode=(*trust_track)[i].Track_Mode;
// Trust_Track_Output[*Trust_track_num_Output-1][0].Elevation=asin((*trust_track)[i].Height/r_output)/PI*180;
// Trust_Track_Output[*Trust_track_num_Output-1][0].z=(*trust_track)[i].Height+Work_Parameter.Height;
// Trust_Track_Output[*Trust_track_num_Output-1][0].Elevation=static_cast<float>(asin((*trust_track)[i].Height/r_output)/PI*180);
// Trust_Track_Output[*Trust_track_num_Output-1][0].z=static_cast<float>((*trust_track)[i].Height+Work_Parameter.Height);
// Trust_Track_Output[*Trust_track_num_Output-1][0].Target_Type=(*trust_track)[i].Target_Type;
// Trust_Track_Output[*Trust_track_num_Output-1][0].track_snr = (*trust_track)[i].snr_point;
// Trust_Track_Output[*Trust_track_num_Output-1][0].track_snr = static_cast<float>((*trust_track)[i].snr_point);
// }
// }
// }
+1 -1
View File
@@ -1,4 +1,4 @@
#ifndef TAS_CTRL_H
#ifndef TAS_CTRL_H
#define TAS_CTRL_H
#include "data_process_class_dll.h"
#include "parameters.h"
+43 -43
View File
@@ -1,4 +1,4 @@
#include "track_asso.h"
#include "track_asso.h"
#include "kalman.h"
#include "coor_trans.h"
#include <cmath>
@@ -20,7 +20,7 @@ int Track_Asso:: track_asso_process(std::vector<PointRecv> *point_
{
//取出对应点迹区的点
for (int i=0;i< point_recv->size();i++)
for (size_t i=0;i< point_recv->size();i++)
{
point_process.push_back((*point_recv)[i]);
int n=point_process.size();
@@ -51,7 +51,7 @@ int Track_Asso:: track_asso_process(std::vector<PointRecv> *point_
//剩余点重新存入点迹
std::vector<PointRecv>().swap((*point_recv));
for (int i=0;i<point_process.size();i++)
for (size_t i=0;i<point_process.size();i++)
{
(*point_recv).push_back(point_process[i]);
@@ -62,7 +62,7 @@ int Track_Asso:: track_asso_process(std::vector<PointRecv> *point_
std::vector<PointRecv>().swap(point_process);
//输出航迹
for (int i=0;i<trust_track->size();i++)
for (size_t i=0;i<trust_track->size();i++)
{ // 输出更新航迹条件:
// if((*trust_track)[i].manual_tracking_flag==0)
// {
@@ -76,53 +76,53 @@ int Track_Asso:: track_asso_process(std::vector<PointRecv> *point_
coor_trans Coor_trans;
double r, azi;
Coor_trans.cart2polar(x, y, &r, &azi);
Trust_Track_Output[*Trust_track_num_Output-1][0].Range=r;
Trust_Track_Output[*Trust_track_num_Output-1][0].Azimuth=azi/PI*180;
Trust_Track_Output[*Trust_track_num_Output-1][0].Range=static_cast<float>(r);
Trust_Track_Output[*Trust_track_num_Output-1][0].Azimuth=static_cast<float>(azi/PI*180);
if((*trust_track)[i].Height<r)
Trust_Track_Output[*Trust_track_num_Output-1][0].Elevation = asin((*trust_track)[i].Height/r)/PI*180;
Trust_Track_Output[*Trust_track_num_Output-1][0].Elevation = static_cast<float>(asin((*trust_track)[i].Height/r)/PI*180);
else
Trust_Track_Output[*Trust_track_num_Output-1][0].Elevation = (*trust_track)[i].elev_point;
Trust_Track_Output[*Trust_track_num_Output-1][0].Elevation = static_cast<float>((*trust_track)[i].elev_point);
Trust_Track_Output[*Trust_track_num_Output-1][0].Track_Index=(*trust_track)[i].Track_Index;
Trust_Track_Output[*Trust_track_num_Output-1][0].Range_V =
sqrt((*trust_track)[i].X[1]*(*trust_track)[i].X[1]+(*trust_track)[i].X[4]*(*trust_track)[i].X[4]);
Trust_Track_Output[*Trust_track_num_Output-1][0].Amplitude = (*trust_track)[i].Amplitude;
static_cast<float>(sqrt((*trust_track)[i].X[1]*(*trust_track)[i].X[1]+(*trust_track)[i].X[4]*(*trust_track)[i].X[4]));
Trust_Track_Output[*Trust_track_num_Output-1][0].Amplitude = static_cast<float>((*trust_track)[i].Amplitude);
Trust_Track_Output[*Trust_track_num_Output-1][0].Track_Mode=(*trust_track)[i].Track_Mode;
Trust_Track_Output[*Trust_track_num_Output-1][0].track_time=(*trust_track)[i].T_track/1000.0;
Trust_Track_Output[*Trust_track_num_Output-1][0].track_time=static_cast<float>((*trust_track)[i].T_track/1000.0);
Trust_Track_Output[*Trust_track_num_Output-1][0].GNSS_time=(*trust_track)[i].GNSS_time;
Trust_Track_Output[*Trust_track_num_Output-1][0].Flag_Point = (*trust_track)[i].point_flag;
Trust_Track_Output[*Trust_track_num_Output-1][0].z=(*trust_track)[i].Height+Work_Parameter.Height;
Trust_Track_Output[*Trust_track_num_Output-1][0].z=static_cast<float>((*trust_track)[i].Height+Work_Parameter.Height);
double Direction_Angle;
Direction_Angle=atan2((*trust_track)[i].X[4], (*trust_track)[i].X[1]);
if(Direction_Angle<0){Direction_Angle=Direction_Angle+2*PI;}
Trust_Track_Output[*Trust_track_num_Output-1][0].Direction_Angle=Direction_Angle/PI*180;
Trust_Track_Output[*Trust_track_num_Output-1][0].Direction_Angle=static_cast<float>(Direction_Angle/PI*180);
//关联点信息
Trust_Track_Output[*Trust_track_num_Output-1][0].range_point=(*trust_track)[i].range_point;
Trust_Track_Output[*Trust_track_num_Output-1][0].azi_point=(*trust_track)[i].azi_point;
Trust_Track_Output[*Trust_track_num_Output-1][0].elev_point=(*trust_track)[i].elev_point;
Trust_Track_Output[*Trust_track_num_Output-1][0].vr_point=(*trust_track)[i].vr_point;
Trust_Track_Output[*Trust_track_num_Output-1][0].range_point=static_cast<float>((*trust_track)[i].range_point);
Trust_Track_Output[*Trust_track_num_Output-1][0].azi_point=static_cast<float>((*trust_track)[i].azi_point);
Trust_Track_Output[*Trust_track_num_Output-1][0].elev_point=static_cast<float>((*trust_track)[i].elev_point);
Trust_Track_Output[*Trust_track_num_Output-1][0].vr_point=static_cast<float>((*trust_track)[i].vr_point);
Trust_Track_Output[*Trust_track_num_Output-1][0].point_type=0;
Trust_Track_Output[*Trust_track_num_Output-1][0].prf_point = (*trust_track)[i].prf_point;
Trust_Track_Output[*Trust_track_num_Output-1][0].track_snr = (*trust_track)[i].snr_point;
Trust_Track_Output[*Trust_track_num_Output-1][0].prf_point = static_cast<float>((*trust_track)[i].prf_point);
Trust_Track_Output[*Trust_track_num_Output-1][0].track_snr = static_cast<float>((*trust_track)[i].snr_point);
//直接输出点迹高度-20260605
//Trust_Track_Output[*Trust_track_num_Output-1][0].z = (*trust_track)[i].range_point * sin((*trust_track)[i].elev_point/180.0*PI);
//输出平滑后的高度
Trust_Track_Output[*Trust_track_num_Output-1][0].z = (*trust_track)[i].Height+Work_Parameter.Height;
Trust_Track_Output[*Trust_track_num_Output-1][0].z = static_cast<float>((*trust_track)[i].Height+Work_Parameter.Height);
Trust_Track_Output[*Trust_track_num_Output-1][0].Elevation = (*trust_track)[i].elev_point;
Trust_Track_Output[*Trust_track_num_Output-1][0].Elevation = static_cast<float>((*trust_track)[i].elev_point);
Trust_Track_Output[*Trust_track_num_Output-1][0].x=(*trust_track)[i].X[0];
Trust_Track_Output[*Trust_track_num_Output-1][0].y=(*trust_track)[i].X[3];
Trust_Track_Output[*Trust_track_num_Output-1][0].v_x=(*trust_track)[i].X[1];
Trust_Track_Output[*Trust_track_num_Output-1][0].v_y=(*trust_track)[i].X[4];
Trust_Track_Output[*Trust_track_num_Output-1][0].x=static_cast<float>((*trust_track)[i].X[0]);
Trust_Track_Output[*Trust_track_num_Output-1][0].y=static_cast<float>((*trust_track)[i].X[3]);
Trust_Track_Output[*Trust_track_num_Output-1][0].v_x=static_cast<float>((*trust_track)[i].X[1]);
Trust_Track_Output[*Trust_track_num_Output-1][0].v_y=static_cast<float>((*trust_track)[i].X[4]);
Trust_Track_Output[*Trust_track_num_Output-1][0].track_rcs = (*trust_track)[i].RCS;
Trust_Track_Output[*Trust_track_num_Output-1][0].track_rcs = static_cast<float>((*trust_track)[i].RCS);
Trust_Track_Output[*Trust_track_num_Output-1][0].pitch_num = (*trust_track)[i].pitch_num;
std::memcpy(Trust_Track_Output[*Trust_track_num_Output-1][0].speed_dim, (*trust_track)[i].speed_dim, sizeof(Trust_Track_Output[*Trust_track_num_Output-1][0].speed_dim));
@@ -137,7 +137,7 @@ int Track_Asso:: track_asso_process(std::vector<PointRecv> *point_
void Track_Asso:: model_interaction(std::vector <Trust_Track> *trust_track)
{
for (int loop_of_track=0;loop_of_track<trust_track->size();loop_of_track++)
for (size_t loop_of_track=0;loop_of_track<trust_track->size();loop_of_track++)
{
// if((*trust_track)[loop_of_track].manual_tracking_flag == 0)
@@ -413,13 +413,13 @@ void Track_Asso:: model_filter(std::vector <Trust_Track> *trust_track,struct Ra
std::vector <asso_info> associated_info;
//遍历所有点迹航迹 计算点迹和航迹的统计距离
for (int loop_of_track = 0; loop_of_track<trust_track->size();loop_of_track++)
for (size_t loop_of_track = 0; loop_of_track<trust_track->size();loop_of_track++)
{
// if((*trust_track)[loop_of_track].manual_tracking_flag==0)
// {
(*trust_track)[loop_of_track].point_flag = 0; //航迹的point_flag置为0 关联上点后再置为1
for (int loop_of_point = 0; loop_of_point<point_process.size();loop_of_point++)
for (size_t loop_of_point = 0; loop_of_point<point_process.size();loop_of_point++)
{
//时间差
@@ -554,8 +554,8 @@ void Track_Asso:: model_filter(std::vector <Trust_Track> *trust_track,struct Ra
associated_info_tmp.d1=d1;
associated_info_tmp.d2=d2;
associated_info_tmp.d3=d3;
associated_info_tmp.point_index=loop_of_point+1;
associated_info_tmp.track_index=loop_of_track+1;
associated_info_tmp.point_index=static_cast<int>(loop_of_point)+1;
associated_info_tmp.track_index=static_cast<int>(loop_of_track)+1;
if(d1<=d2&&d1<=d3)
associated_info_tmp.d_min=d1;
else if(d2<=d1&& d2<=d3)
@@ -571,7 +571,7 @@ void Track_Asso:: model_filter(std::vector <Trust_Track> *trust_track,struct Ra
//最近邻法关联
int associated_num=associated_info.size();
for (int i=0;i<trust_track->size();i++)
for (size_t i=0;i<trust_track->size();i++)
{
//寻找最小d
if(associated_num>0)
@@ -650,9 +650,9 @@ void Track_Asso:: model_filter(std::vector <Trust_Track> *trust_track,struct Ra
for (int ii=0;ii<3;ii++)
for (int jj=0;jj<3;jj++)
{
S1_out(ii,jj)=S1[ii][jj];
S2_out(ii,jj)=S2[ii][jj];
S3_out(ii,jj)=S3[ii][jj];
S1_out(ii,jj)=static_cast<float>(S1[ii][jj]);
S2_out(ii,jj)=static_cast<float>(S2[ii][jj]);
S3_out(ii,jj)=static_cast<float>(S3[ii][jj]);
}
double det_S1=S1_out.determinant();
double Possibility1=(det_S1>1e-12)?(1.0/sqrt(pow(2*PI,3)*det_S1)*exp(-0.5*d1)):0.0;
@@ -755,7 +755,7 @@ void Track_Asso:: model_filter(std::vector <Trust_Track> *trust_track,struct Ra
}
//未关联上的航迹 进行外推 tws
for (int i =0; i<(*trust_track).size();i++ )
for (size_t i =0; i<(*trust_track).size();i++ )
{
if((*trust_track)[i].point_flag == 0 && (*trust_track)[i].manual_tracking_flag == 0)
{
@@ -804,8 +804,8 @@ void Track_Asso:: model_filter(std::vector <Trust_Track> *trust_track,struct Ra
memcpy((*trust_track)[i].P2,P2_pred,6*6*sizeof(double));
memcpy((*trust_track)[i].P3,P3_pred,6*6*sizeof(double));
(*trust_track)[i].T_track = (*trust_track)[i].T_track+delta_T*1000.0; //更新航迹时间
(*trust_track)[i].GNSS_time = (*trust_track)[i].GNSS_time+delta_T*1000.0; //更新航迹时间
(*trust_track)[i].T_track = static_cast<long long>((*trust_track)[i].T_track+delta_T*1000.0); //更新航迹时间
(*trust_track)[i].GNSS_time = static_cast<long long>((*trust_track)[i].GNSS_time+delta_T*1000.0); //更新航迹时间
(*trust_track)[i].Extrapolate_round =(*trust_track)[i].Extrapolate_round+1; //连续未用实点更新时间
(*trust_track)[i].point_flag=0; //虚点
}
@@ -815,7 +815,7 @@ void Track_Asso:: model_filter(std::vector <Trust_Track> *trust_track,struct Ra
void Track_Asso:: model_output(std::vector <Trust_Track> *trust_track)
{
for(int loop_of_track=0; loop_of_track<trust_track->size(); loop_of_track++)
for(size_t loop_of_track=0; loop_of_track<trust_track->size(); loop_of_track++)
{
// if((*trust_track)[loop_of_track].manual_tracking_flag==0)
@@ -919,7 +919,7 @@ void Track_Asso:: track_hight_update(int updata_
)
{
if(updata_track_index<=trust_track->size() && asso_point_index<=point_process.size())
if(updata_track_index<=static_cast<int>(trust_track->size()) && asso_point_index<=static_cast<int>(point_process.size()))
{
(*trust_track)[updata_track_index-1].Hight_smooth.push_back(point_process[asso_point_index-1].Height);
@@ -944,10 +944,10 @@ void Track_Asso:: track_hight_update(int updata_
}
double sum=0;
if((*trust_track)[updata_track_index-1].Hight_smooth.size()<height_win_length)
if((*trust_track)[updata_track_index-1].Hight_smooth.size()<static_cast<size_t>(height_win_length))
{
for (int i=0;i<(*trust_track)[updata_track_index-1].Hight_smooth.size();i++)
for (size_t i=0;i<(*trust_track)[updata_track_index-1].Hight_smooth.size();i++)
{
sum=sum+(*trust_track)[updata_track_index-1].Hight_smooth[i];
@@ -956,7 +956,7 @@ void Track_Asso:: track_hight_update(int updata_
(*trust_track)[updata_track_index-1].Height=sum/(*trust_track)[updata_track_index-1].Hight_smooth.size();
}
else if((*trust_track)[updata_track_index-1].Hight_smooth.size()>=height_win_length)
else if((*trust_track)[updata_track_index-1].Hight_smooth.size()>=static_cast<size_t>(height_win_length))
{
int N=(*trust_track)[updata_track_index-1].Hight_smooth.size();
+1 -1
View File
@@ -1,4 +1,4 @@
#ifndef TRACK_ASSO_H
#ifndef TRACK_ASSO_H
#define TRACK_ASSO_H
#include "data_process_class_dll.h"
@@ -1,4 +1,4 @@
#include "track_asso_direct_tracking.h"
#include "track_asso_direct_tracking.h"
#include "kalman.h"
#include "coor_trans.h"
#include <cmath>
@@ -1,4 +1,4 @@
#ifndef TRACK_ASSO_DIRECT_TRACKING_H
#ifndef TRACK_ASSO_DIRECT_TRACKING_H
#define TRACK_ASSO_DIRECT_TRACKING_H
#include "data_process_class_dll.h"
#include "parameters.h"
+41 -41
View File
@@ -1,4 +1,4 @@
#include "track_asso_tas.h"
#include "track_asso_tas.h"
#include "kalman.h"
#include "coor_trans.h"
#include <cmath>
@@ -20,7 +20,7 @@ long long latest_timestamp //最新时间戳
{
//取出点迹
for (int i=0;i< point_recv_tas->size();i++)
for (size_t i=0;i< point_recv_tas->size();i++)
{
point_process.push_back((*point_recv_tas)[i]);
}
@@ -36,7 +36,7 @@ long long latest_timestamp //最新时间戳
std::vector<PointRecv>().swap(point_process);
//输出航迹
for (int i=0;i<trust_track->size();i++)
for (size_t i=0;i<trust_track->size();i++)
{ // 输出更新航迹条件:
if((*trust_track)[i].Track_Index == tas_track_idx)
{
@@ -49,42 +49,42 @@ long long latest_timestamp //最新时间戳
coor_trans Coor_trans;
double r, azi;
Coor_trans.cart2polar(x, y, &r, &azi);
Trust_Track_Output[*Trust_track_num_Output-1][0].Range=r;
Trust_Track_Output[*Trust_track_num_Output-1][0].Azimuth=azi/PI*180;
Trust_Track_Output[*Trust_track_num_Output-1][0].Range=static_cast<float>(r);
Trust_Track_Output[*Trust_track_num_Output-1][0].Azimuth=static_cast<float>(azi/PI*180);
{
double elev_ratio = (r > 0.0) ? (*trust_track)[i].Height / r : 0.0;
if (elev_ratio > 1.0) elev_ratio = 1.0;
if (elev_ratio < -1.0) elev_ratio = -1.0;
Trust_Track_Output[*Trust_track_num_Output-1][0].Elevation = asin(elev_ratio)/PI*180;
Trust_Track_Output[*Trust_track_num_Output-1][0].Elevation = static_cast<float>(asin(elev_ratio)/PI*180);
}
Trust_Track_Output[*Trust_track_num_Output-1][0].Track_Index=(*trust_track)[i].Track_Index;
Trust_Track_Output[*Trust_track_num_Output-1][0].Range_V =
sqrt((*trust_track)[i].X[1]*(*trust_track)[i].X[1]+(*trust_track)[i].X[4]*(*trust_track)[i].X[4]);
Trust_Track_Output[*Trust_track_num_Output-1][0].Amplitude = (*trust_track)[i].Amplitude;
static_cast<float>(sqrt((*trust_track)[i].X[1]*(*trust_track)[i].X[1]+(*trust_track)[i].X[4]*(*trust_track)[i].X[4]));
Trust_Track_Output[*Trust_track_num_Output-1][0].Amplitude = static_cast<float>((*trust_track)[i].Amplitude);
Trust_Track_Output[*Trust_track_num_Output-1][0].Track_Mode=(*trust_track)[i].Track_Mode;
Trust_Track_Output[*Trust_track_num_Output-1][0].track_time=(*trust_track)[i].T_track/1000.0;
Trust_Track_Output[*Trust_track_num_Output-1][0].track_time=static_cast<float>((*trust_track)[i].T_track/1000.0);
Trust_Track_Output[*Trust_track_num_Output-1][0].GNSS_time=(*trust_track)[i].GNSS_time;
Trust_Track_Output[*Trust_track_num_Output-1][0].Flag_Point = (*trust_track)[i].point_flag;
Trust_Track_Output[*Trust_track_num_Output-1][0].z=(*trust_track)[i].Height+Work_Parameter.Height;
Trust_Track_Output[*Trust_track_num_Output-1][0].z=static_cast<float>((*trust_track)[i].Height+Work_Parameter.Height);
double Direction_Angle;
Direction_Angle=atan2((*trust_track)[i].X[4], (*trust_track)[i].X[1]);
if(Direction_Angle<0){Direction_Angle=Direction_Angle+2*PI;}
Trust_Track_Output[*Trust_track_num_Output-1][0].Direction_Angle=Direction_Angle/PI*180;
Trust_Track_Output[*Trust_track_num_Output-1][0].Direction_Angle=static_cast<float>(Direction_Angle/PI*180);
//关联点信息
Trust_Track_Output[*Trust_track_num_Output-1][0].range_point=(*trust_track)[i].range_point;
Trust_Track_Output[*Trust_track_num_Output-1][0].azi_point=(*trust_track)[i].azi_point;
Trust_Track_Output[*Trust_track_num_Output-1][0].elev_point=(*trust_track)[i].elev_point;
Trust_Track_Output[*Trust_track_num_Output-1][0].vr_point=(*trust_track)[i].vr_point;
Trust_Track_Output[*Trust_track_num_Output-1][0].range_point=static_cast<float>((*trust_track)[i].range_point);
Trust_Track_Output[*Trust_track_num_Output-1][0].azi_point=static_cast<float>((*trust_track)[i].azi_point);
Trust_Track_Output[*Trust_track_num_Output-1][0].elev_point=static_cast<float>((*trust_track)[i].elev_point);
Trust_Track_Output[*Trust_track_num_Output-1][0].vr_point=static_cast<float>((*trust_track)[i].vr_point);
Trust_Track_Output[*Trust_track_num_Output-1][0].point_type=1;
Trust_Track_Output[*Trust_track_num_Output-1][0].prf_point = (*trust_track)[i].prf_point;
Trust_Track_Output[*Trust_track_num_Output-1][0].track_snr = (*trust_track)[i].snr_point;
Trust_Track_Output[*Trust_track_num_Output-1][0].x=(*trust_track)[i].X[0];
Trust_Track_Output[*Trust_track_num_Output-1][0].y=(*trust_track)[i].X[3];
Trust_Track_Output[*Trust_track_num_Output-1][0].v_x=(*trust_track)[i].X[1];
Trust_Track_Output[*Trust_track_num_Output-1][0].v_y=(*trust_track)[i].X[4];
Trust_Track_Output[*Trust_track_num_Output-1][0].track_rcs = (*trust_track)[i].RCS;
Trust_Track_Output[*Trust_track_num_Output-1][0].prf_point = static_cast<float>((*trust_track)[i].prf_point);
Trust_Track_Output[*Trust_track_num_Output-1][0].track_snr = static_cast<float>((*trust_track)[i].snr_point);
Trust_Track_Output[*Trust_track_num_Output-1][0].x=static_cast<float>((*trust_track)[i].X[0]);
Trust_Track_Output[*Trust_track_num_Output-1][0].y=static_cast<float>((*trust_track)[i].X[3]);
Trust_Track_Output[*Trust_track_num_Output-1][0].v_x=static_cast<float>((*trust_track)[i].X[1]);
Trust_Track_Output[*Trust_track_num_Output-1][0].v_y=static_cast<float>((*trust_track)[i].X[4]);
Trust_Track_Output[*Trust_track_num_Output-1][0].track_rcs = static_cast<float>((*trust_track)[i].RCS);
Trust_Track_Output[*Trust_track_num_Output-1][0].pitch_num = (*trust_track)[i].pitch_num;
std::memcpy(Trust_Track_Output[*Trust_track_num_Output-1][0].speed_dim, (*trust_track)[i].speed_dim, sizeof(Trust_Track_Output[*Trust_track_num_Output-1][0].speed_dim));
@@ -101,7 +101,7 @@ long long latest_timestamp //最新时间戳
void Track_Asso_Tas:: model_interaction( std::vector<Trust_Track> *trust_track, int tas_track_idx)
{
for (int loop_of_track=0;loop_of_track<trust_track->size();loop_of_track++)
for (size_t loop_of_track=0;loop_of_track<trust_track->size();loop_of_track++)
{
if((*trust_track)[loop_of_track].Track_Index == tas_track_idx)
@@ -238,7 +238,7 @@ void Track_Asso_Tas::model_filter( std::vector<Trust_Track> *t
double r_track = 0;
double h_track = 0;
bool found_tas_track = false;
for (int loop_of_track=0;loop_of_track<trust_track->size();loop_of_track++)
for (size_t loop_of_track=0;loop_of_track<trust_track->size();loop_of_track++)
{
if((*trust_track)[loop_of_track].Track_Index == tas_track_idx)
{
@@ -257,7 +257,7 @@ void Track_Asso_Tas::model_filter( std::vector<Trust_Track> *t
memcpy(P2,(*trust_track)[loop_of_track].P2,6*6*sizeof(double));
memcpy(P3,(*trust_track)[loop_of_track].P3,6*6*sizeof(double));
T_track = (*trust_track)[loop_of_track].T_track;
T_track = static_cast<double>((*trust_track)[loop_of_track].T_track);
v_track = sqrt(pow((*trust_track)[loop_of_track].X[1],2)+pow((*trust_track)[loop_of_track].X[4],2));
r_track = sqrt(pow((*trust_track)[loop_of_track].X[0],2)+pow((*trust_track)[loop_of_track].X[3],2));
h_track = (*trust_track)[loop_of_track].Height;
@@ -269,7 +269,7 @@ void Track_Asso_Tas::model_filter( std::vector<Trust_Track> *t
return;
// 计算量测和航迹统计距离
for (int loop_of_point = 0; loop_of_point<point_process.size();loop_of_point++)
for (size_t loop_of_point = 0; loop_of_point<point_process.size();loop_of_point++)
{
//量测信息
// double Z[2]={point_process[loop_of_point].Range*cos(point_process[loop_of_point].Azimuth),
@@ -355,7 +355,7 @@ void Track_Asso_Tas::model_filter( std::vector<Trust_Track> *t
associated_info_tmp.d1=d1;
associated_info_tmp.d2=d2;
associated_info_tmp.d3=d3;
associated_info_tmp.point_index=loop_of_point+1;
associated_info_tmp.point_index=static_cast<int>(loop_of_point)+1;
if(d1<=d2&&d1<=d3)
associated_info_tmp.d_min=d1;
else if(d2<=d1&& d2<=d3)
@@ -376,12 +376,12 @@ void Track_Asso_Tas::model_filter( std::vector<Trust_Track> *t
//找最近点
int min_index=1;
double min_d=associated_info[0].d_min;
for (int ii=0;ii<associated_info.size();ii++)
for (size_t ii=0;ii<associated_info.size();ii++)
{
if(associated_info[ii].d_min<min_d)
{
min_d=associated_info[ii].d_min;
min_index=ii+1;
min_index=static_cast<int>(ii)+1;
}
}
int point_index=associated_info[min_index-1].point_index;
@@ -413,9 +413,9 @@ void Track_Asso_Tas::model_filter( std::vector<Trust_Track> *t
for (int ii=0;ii<3;ii++)
for (int jj=0;jj<3;jj++)
{
S1_out(ii,jj)=S1[ii][jj];
S2_out(ii,jj)=S2[ii][jj];
S3_out(ii,jj)=S3[ii][jj];
S1_out(ii,jj)=static_cast<float>(S1[ii][jj]);
S2_out(ii,jj)=static_cast<float>(S2[ii][jj]);
S3_out(ii,jj)=static_cast<float>(S3[ii][jj]);
}
double det_S1=S1_out.determinant();
double Possibility1=(det_S1>1e-12)?(1.0/sqrt(pow(2*PI,3)*det_S1)*exp(-0.5*d1)):0.0;
@@ -425,7 +425,7 @@ void Track_Asso_Tas::model_filter( std::vector<Trust_Track> *t
double Possibility3=(det_S3>1e-12)?(1.0/sqrt(pow(2*PI,3)*det_S3)*exp(-0.5*d3)):0.0;
//更新航迹
for(int i=0;i<trust_track->size();i++)
for(size_t i=0;i<trust_track->size();i++)
if((*trust_track)[i].Track_Index == tas_track_idx)
{
@@ -496,7 +496,7 @@ void Track_Asso_Tas::model_filter( std::vector<Trust_Track> *t
else
{
for(int i=0;i<trust_track->size();i++)
for(size_t i=0;i<trust_track->size();i++)
if((*trust_track)[i].Track_Index == tas_track_idx)
{
double delta_T = (latest_timestamp - T_track)/1000.0;
@@ -517,8 +517,8 @@ void Track_Asso_Tas::model_filter( std::vector<Trust_Track> *t
memcpy((*trust_track)[i].P2,P2_pred,6*6*sizeof(double));
memcpy((*trust_track)[i].P3,P3_pred,6*6*sizeof(double));
(*trust_track)[i].T_track = (*trust_track)[i].T_track+delta_T*1000.0; //更新航迹时间
(*trust_track)[i].GNSS_time = (*trust_track)[i].GNSS_time+delta_T*1000.0; //更新航迹时间
(*trust_track)[i].T_track = static_cast<long long>((*trust_track)[i].T_track+delta_T*1000.0); //更新航迹时间
(*trust_track)[i].GNSS_time = static_cast<long long>((*trust_track)[i].GNSS_time+delta_T*1000.0); //更新航迹时间
(*trust_track)[i].point_flag=0; //虚点
(*trust_track)[i].Extrapolate_round =(*trust_track)[i].Extrapolate_round+1;
}
@@ -529,7 +529,7 @@ void Track_Asso_Tas::model_filter( std::vector<Trust_Track> *t
void Track_Asso_Tas::model_output(std::vector<Trust_Track> *trust_track, int tas_track_idx )
{
for(int i=0; i<trust_track->size(); i++)
for(size_t i=0; i<trust_track->size(); i++)
if((*trust_track)[i].Track_Index==tas_track_idx)
{
@@ -737,7 +737,7 @@ void Track_Asso_Tas::track_hight_update(int tas_
std::vector<Trust_Track> *trust_track //航迹
)
{
for(int i=0; i<trust_track->size(); i++)
for(size_t i=0; i<trust_track->size(); i++)
if((*trust_track)[i].Track_Index==tas_track_idx)
{
(*trust_track)[i].Hight_smooth.push_back(point_process[asso_point_index-1].Height);
@@ -761,10 +761,10 @@ void Track_Asso_Tas::track_hight_update(int tas_
}
double sum=0;
if((*trust_track)[i].Hight_smooth.size()<height_win_length)
if((*trust_track)[i].Hight_smooth.size()<static_cast<size_t>(height_win_length))
{
for (int ii=0;ii<(*trust_track)[i].Hight_smooth.size();ii++)
for (size_t ii=0;ii<(*trust_track)[i].Hight_smooth.size();ii++)
{
sum=sum+(*trust_track)[i].Hight_smooth[ii];
@@ -773,7 +773,7 @@ void Track_Asso_Tas::track_hight_update(int tas_
(*trust_track)[i].Height=sum/(*trust_track)[i].Hight_smooth.size();
}
else if((*trust_track)[i].Hight_smooth.size()>=height_win_length)
else if((*trust_track)[i].Hight_smooth.size()>=static_cast<size_t>(height_win_length))
{
int N=(*trust_track)[i].Hight_smooth.size();
+1 -1
View File
@@ -1,4 +1,4 @@
#ifndef TRACK_ASSO_TAS_H
#ifndef TRACK_ASSO_TAS_H
#define TRACK_ASSO_TAS_H
#include "data_process_class_dll.h"
#include "parameters.h"
+1 -1
View File
@@ -1,4 +1,4 @@
#include "track_die.h"
#include "track_die.h"
#include "kalman.h"
#include "coor_trans.h"
#include <cmath>
+1 -1
View File
@@ -1,4 +1,4 @@
#ifndef TRACK_DIE_H
#ifndef TRACK_DIE_H
#define TRACK_DIE_H
#include "data_process_class_dll.h"
#include "parameters.h"
+1 -1
View File
@@ -1,4 +1,4 @@
#include "track_die_tas.h"
#include "track_die_tas.h"
#include "kalman.h"
#include "coor_trans.h"
#include <iostream>
+1 -1
View File
@@ -1,4 +1,4 @@
#ifndef TRACK_DIE_TAS_H
#ifndef TRACK_DIE_TAS_H
#define TRACK_DIE_TAS_H
#include "data_process_class_dll.h"
#include "parameters.h"
@@ -1,4 +1,4 @@
#include "track_index_mangement.h"
#include "track_index_mangement.h"
#include <cmath>
#include <cstring>
#include <vector>
@@ -30,7 +30,7 @@ int Track_Ind_Mangement ::track_ind_get( std::vector<Trust_Track> *trust_track
{
//建立航迹号列表
int List[MAX_TRACK_INDEX]={0};
for (int i=0;i<trust_track->size();i++)
for (size_t i=0;i<trust_track->size();i++)
{
int ti = (*trust_track)[i].Track_Index;
if (ti >= 1 && ti <= MAX_TRACK_INDEX)
@@ -1,4 +1,4 @@
#ifndef TRACK_INDEX_MANGEMENT_H
#ifndef TRACK_INDEX_MANGEMENT_H
#define TRACK_INDEX_MANGEMENT_H
#include "data_process_class_dll.h"
#include "parameters.h"
+37 -37
View File
@@ -1,4 +1,4 @@
#include "track_init.h"
#include "track_init.h"
#include "kalman.h"
#include "coor_trans.h"
#include <cmath>
@@ -34,13 +34,13 @@ int Track_Init::track_init_process_logic( std::vector <PointRecv>
// }
//取出待起航的点迹数据
for (int i=0;i<(*point_recv).size();i++)
for (size_t i=0;i<(*point_recv).size();i++)
point_process.push_back((*point_recv)[i]);
//临时航迹的buff_round+1
for (int i=0;i<temp_track->size();i++)
for (size_t i=0;i<temp_track->size();i++)
{
for (int j=0;j<(*temp_track)[i].size();j++)
for (size_t j=0;j<(*temp_track)[i].size();j++)
{
(*temp_track)[i][j].buff_round = (*temp_track)[i][j].buff_round+1;
}
@@ -71,7 +71,7 @@ int Track_Init::track_init_process_logic( std::vector <PointRecv>
//剩余点重新存入点迹
std::vector<PointRecv>().swap((*point_recv));
for (int i=0;i<point_process.size();i++)
for (size_t i=0;i<point_process.size();i++)
(*point_recv).push_back(point_process[i]);
//剩余点转为航迹头
@@ -155,9 +155,9 @@ void Track_Init::point_temp_track_asso(std::vector <std::vector<Temp_track>>
};
std::vector <Asso_info> asso_info;
for ( int i=0;i<point_process.size();i++)
for ( size_t i=0;i<point_process.size();i++)
{
for ( int j=0;j<(*temp_track).size();j++)
for ( size_t j=0;j<(*temp_track).size();j++)
{
int L = (*temp_track)[j].size();
@@ -174,7 +174,7 @@ void Track_Init::point_temp_track_asso(std::vector <std::vector<Temp_track>>
double prt = point_process[i].PRF_index;
double freq_ind = point_process[i].Freq_index;
double h_point = point_process[i].Height;
double T_point = point_process[i].CPI_Time;
double T_point = static_cast<double>(point_process[i].CPI_Time);
//航迹信息
double X[4];
@@ -184,7 +184,7 @@ void Track_Init::point_temp_track_asso(std::vector <std::vector<Temp_track>>
double v_temp_track=(*temp_track)[j][L-1].vr;
double r_temp_track=(*temp_track)[j][L-1].r;
double h_temp_track=(*temp_track)[j][L-1].height;
double T_track_head = (*temp_track)[j][L-1].T;
double T_track_head = static_cast<double>((*temp_track)[j][L-1].T);
double delta_T = (T_point - T_track_head)/1000.0;
@@ -221,8 +221,8 @@ void Track_Init::point_temp_track_asso(std::vector <std::vector<Temp_track>>
if(d*d<=TRACK_START_THRESHOLD*TRACK_START_THRESHOLD && alpha<ALPHA_START && vr_point*v_temp_track>0)// && fabs(h_point-h_temp_track )<= r_point*SIGMA_E&& abs(vr_point-v_temp_track)/abs(v_temp_track)<0.8
{
struct Asso_info asso_info_tmp;
asso_info_tmp.point_idx = i+1;
asso_info_tmp.track_idx = j+1;
asso_info_tmp.point_idx = static_cast<int>(i)+1;
asso_info_tmp.track_idx = static_cast<int>(j)+1;
asso_info_tmp.d = d;
asso_info.push_back(asso_info_tmp);
(*temp_track)[j][L-1].asso_flag = 1;
@@ -235,7 +235,7 @@ void Track_Init::point_temp_track_asso(std::vector <std::vector<Temp_track>>
}
// temp_track中加入新关联上的临时航迹
for (int i = 0 ; i<asso_info.size();i++ )
for (size_t i = 0 ; i<asso_info.size();i++ )
{
(*temp_track).push_back(std::vector <Temp_track> ());
@@ -316,10 +316,10 @@ void Track_Init::point_track_head_asso( std::vector <std::vector<Temp_track>>
std::vector <Asso_info> asso_info;
//关联
for ( int i=0;i<point_process.size();i++)
for ( size_t i=0;i<point_process.size();i++)
{
for ( int j=0;j<temp_track->size();j++)
for ( size_t j=0;j<temp_track->size();j++)
{
if((*temp_track)[j].size()==1 && (*temp_track)[j][0].buff_round >= 2)
@@ -332,7 +332,7 @@ void Track_Init::point_track_head_asso( std::vector <std::vector<Temp_track>>
vr_point=point_process[i].Velocity;
double r_point=point_process[i].Range;
double h_point = point_process[i].Height;
double T_point = point_process[i].CPI_Time;
double T_point = static_cast<double>(point_process[i].CPI_Time);
//航迹信息
double x_track_head, y_track_head;
@@ -340,7 +340,7 @@ void Track_Init::point_track_head_asso( std::vector <std::vector<Temp_track>>
y_track_head=(*temp_track)[j][0].X[2];
double v_track_head=(*temp_track)[j][0].vr;
double h_track_head = (*temp_track)[j][0].height;
double T_track_head = (*temp_track)[j][0].T;
double T_track_head = static_cast<double>((*temp_track)[j][0].T);
//距离差
double dis = sqrt(pow(x_point-x_track_head,2)+pow(y_point-y_track_head,2));
@@ -368,8 +368,8 @@ void Track_Init::point_track_head_asso( std::vector <std::vector<Temp_track>>
{
struct Asso_info asso_info_tmp;
asso_info_tmp.point_idx = i+1;
asso_info_tmp.track_idx = j+1;
asso_info_tmp.point_idx = static_cast<int>(i)+1;
asso_info_tmp.track_idx = static_cast<int>(j)+1;
asso_info.push_back(asso_info_tmp);
(*temp_track)[j][0].asso_flag = 1;
point_process[i].Use_Flag = 1;
@@ -381,7 +381,7 @@ void Track_Init::point_track_head_asso( std::vector <std::vector<Temp_track>>
}
// temp_track中加入新关联上的临时航迹
for (int i = 0 ; i<asso_info.size();i++ )
for (size_t i = 0 ; i<asso_info.size();i++ )
{
(*temp_track).push_back(std::vector <Temp_track> ());
@@ -612,19 +612,19 @@ void Track_Init::tmp_track_to_trust_track(std::vector<Trust_Track> *trust_tra
Trust_Track_Output[*Trust_track_num_Output-1][j].Track_Index=index;
Trust_Track_Output[*Trust_track_num_Output-1][j].Point_Sum=L;
Trust_Track_Output[*Trust_track_num_Output-1][j].Range=Track_to_start[i][j].r;
Trust_Track_Output[*Trust_track_num_Output-1][j].Azimuth=Track_to_start[i][j].azi/PI*180;
Trust_Track_Output[*Trust_track_num_Output-1][j].Range=static_cast<float>(Track_to_start[i][j].r);
Trust_Track_Output[*Trust_track_num_Output-1][j].Azimuth=static_cast<float>(Track_to_start[i][j].azi/PI*180);
{
double elev_ratio = (Track_to_start[i][j].r > 0.0) ? Track_to_start[i][j].height / Track_to_start[i][j].r : 0.0;
if (elev_ratio > 1.0) elev_ratio = 1.0;
if (elev_ratio < -1.0) elev_ratio = -1.0;
Trust_Track_Output[*Trust_track_num_Output-1][j].Elevation=asin(elev_ratio)/PI*180;
Trust_Track_Output[*Trust_track_num_Output-1][j].Elevation=static_cast<float>(asin(elev_ratio)/PI*180);
}
Trust_Track_Output[*Trust_track_num_Output-1][j].Range_V=sqrt(pow(Track_to_start[i][j].X[1],2)+pow(Track_to_start[i][j].X[3],2));
Trust_Track_Output[*Trust_track_num_Output-1][j].z=Track_to_start[i][j].height;
Trust_Track_Output[*Trust_track_num_Output-1][j].Amplitude=Track_to_start[i][j].Amp;
Trust_Track_Output[*Trust_track_num_Output-1][j].track_snr = Track_to_start[i][j].snr;
Trust_Track_Output[*Trust_track_num_Output-1][j].track_rcs = Track_to_start[i][j].RCS;
Trust_Track_Output[*Trust_track_num_Output-1][j].Range_V=static_cast<float>(sqrt(pow(Track_to_start[i][j].X[1],2)+pow(Track_to_start[i][j].X[3],2)));
Trust_Track_Output[*Trust_track_num_Output-1][j].z=static_cast<float>(Track_to_start[i][j].height);
Trust_Track_Output[*Trust_track_num_Output-1][j].Amplitude=static_cast<float>(Track_to_start[i][j].Amp);
Trust_Track_Output[*Trust_track_num_Output-1][j].track_snr = static_cast<float>(Track_to_start[i][j].snr);
Trust_Track_Output[*Trust_track_num_Output-1][j].track_rcs = static_cast<float>(Track_to_start[i][j].RCS);
Trust_Track_Output[*Trust_track_num_Output-1][j].pitch_num = Track_to_start[i][j].pitch_num;
@@ -634,25 +634,25 @@ void Track_Init::tmp_track_to_trust_track(std::vector<Trust_Track> *trust_tra
Direction_Angle=atan2(Track_to_start[i][j].X[3],Track_to_start[i][j].X[1]);
if(Direction_Angle<0)
Direction_Angle=Direction_Angle+2*PI;
Trust_Track_Output[*Trust_track_num_Output-1][j].Direction_Angle=Direction_Angle/PI*180;
Trust_Track_Output[*Trust_track_num_Output-1][j].Direction_Angle=static_cast<float>(Direction_Angle/PI*180);
Trust_Track_Output[*Trust_track_num_Output-1][j].track_time=(Track_to_start[i][j].T)/1000.0;
Trust_Track_Output[*Trust_track_num_Output-1][j].track_time=static_cast<float>((Track_to_start[i][j].T)/1000.0);
Trust_Track_Output[*Trust_track_num_Output-1][j].GNSS_time=Track_to_start[i][j].GNSS_time;
Trust_Track_Output[*Trust_track_num_Output-1][j].x=Track_to_start[i][j].X[0];
Trust_Track_Output[*Trust_track_num_Output-1][j].v_x=Track_to_start[i][j].X[1];
Trust_Track_Output[*Trust_track_num_Output-1][j].y=Track_to_start[i][j].X[2];
Trust_Track_Output[*Trust_track_num_Output-1][j].v_y=Track_to_start[i][j].X[3];
Trust_Track_Output[*Trust_track_num_Output-1][j].x=static_cast<float>(Track_to_start[i][j].X[0]);
Trust_Track_Output[*Trust_track_num_Output-1][j].v_x=static_cast<float>(Track_to_start[i][j].X[1]);
Trust_Track_Output[*Trust_track_num_Output-1][j].y=static_cast<float>(Track_to_start[i][j].X[2]);
Trust_Track_Output[*Trust_track_num_Output-1][j].v_y=static_cast<float>(Track_to_start[i][j].X[3]);
Trust_Track_Output[*Trust_track_num_Output-1][j].range_point=Track_to_start[i][j].r;
Trust_Track_Output[*Trust_track_num_Output-1][j].azi_point=Track_to_start[i][j].azi/PI*180;
Trust_Track_Output[*Trust_track_num_Output-1][j].range_point=static_cast<float>(Track_to_start[i][j].r);
Trust_Track_Output[*Trust_track_num_Output-1][j].azi_point=static_cast<float>(Track_to_start[i][j].azi/PI*180);
{
double elev_ratio = (Track_to_start[i][j].r > 0.0) ? Track_to_start[i][j].height / Track_to_start[i][j].r : 0.0;
if (elev_ratio > 1.0) elev_ratio = 1.0;
if (elev_ratio < -1.0) elev_ratio = -1.0;
Trust_Track_Output[*Trust_track_num_Output-1][j].elev_point=asin(elev_ratio)/PI*180;
Trust_Track_Output[*Trust_track_num_Output-1][j].elev_point=static_cast<float>(asin(elev_ratio)/PI*180);
}
Trust_Track_Output[*Trust_track_num_Output-1][j].vr_point=Track_to_start[i][j].vr;
Trust_Track_Output[*Trust_track_num_Output-1][j].vr_point=static_cast<float>(Track_to_start[i][j].vr);
Trust_Track_Output[*Trust_track_num_Output-1][j].point_type=0;
Trust_Track_Output[*Trust_track_num_Output-1][j].Flag_Point=1;
Trust_Track_Output[*Trust_track_num_Output-1][j].Track_Mode=0;//跟踪模式 TWS 0
+1 -1
View File
@@ -1,4 +1,4 @@
#ifndef TRACK_INIT_H
#ifndef TRACK_INIT_H
#define TRACK_INIT_H
#include "data_process_class_dll.h"
#include "track_index_mangement.h"
@@ -1,4 +1,4 @@
#include "track_init_direct_tracking.h"
#include "track_init_direct_tracking.h"
#include "kalman.h"
#include "coor_trans.h"
#include <cmath>
@@ -33,9 +33,9 @@ void Track_Init_Direct_Tracking::point_temp_track_asso(std::vector <std::vector<
};
std::vector <Asso_info> asso_info;
for ( int i=0;i<point_process.size();i++)
for ( size_t i=0;i<point_process.size();i++)
{
for ( int j=0;j<(*temp_track).size();j++)
for ( size_t j=0;j<(*temp_track).size();j++)
{
int L = (*temp_track)[j].size();
@@ -52,7 +52,7 @@ void Track_Init_Direct_Tracking::point_temp_track_asso(std::vector <std::vector<
double prt = point_process[i].PRF_index;
double freq_ind = point_process[i].Freq_index;
double h_point = point_process[i].Height;
double T_point = point_process[i].CPI_Time;
double T_point = static_cast<double>(point_process[i].CPI_Time);
//航迹信息
double X[4];
@@ -62,7 +62,7 @@ void Track_Init_Direct_Tracking::point_temp_track_asso(std::vector <std::vector<
double v_temp_track=(*temp_track)[j][L-1].vr;
double r_temp_track=(*temp_track)[j][L-1].r;
double h_temp_track=(*temp_track)[j][L-1].height;
double T_track_head = (*temp_track)[j][L-1].T;
double T_track_head = static_cast<double>((*temp_track)[j][L-1].T);
double delta_T = (T_point - T_track_head)/1000.0;
@@ -85,8 +85,8 @@ void Track_Init_Direct_Tracking::point_temp_track_asso(std::vector <std::vector<
if(d*d<=TRACK_START_THRESHOLD*TRACK_START_THRESHOLD && alpha<ALPHA_START && vr_point*v_temp_track>0)// && fabs(h_point-h_temp_track )<= r_point*SIGMA_E&& abs(vr_point-v_temp_track)/abs(v_temp_track)<0.8
{
struct Asso_info asso_info_tmp;
asso_info_tmp.point_idx = i+1;
asso_info_tmp.track_idx = j+1;
asso_info_tmp.point_idx = static_cast<int>(i)+1;
asso_info_tmp.track_idx = static_cast<int>(j)+1;
asso_info.push_back(asso_info_tmp);
(*temp_track)[j][L-1].asso_flag = 1;
point_process[i].Use_Flag = 1;
@@ -97,7 +97,7 @@ void Track_Init_Direct_Tracking::point_temp_track_asso(std::vector <std::vector<
}
// temp_track中加入新关联上的临时航迹
for (int i = 0 ; i<asso_info.size();i++ )
for (size_t i = 0 ; i<asso_info.size();i++ )
{
(*temp_track).push_back(std::vector <Temp_track> ());
@@ -175,10 +175,10 @@ void Track_Init_Direct_Tracking::point_track_head_asso( std::vector <std::vector
std::vector <Asso_info> asso_info;
//关联
for ( int i=0;i<point_process.size();i++)
for ( size_t i=0;i<point_process.size();i++)
{
for ( int j=0;j<temp_track->size();j++)
for ( size_t j=0;j<temp_track->size();j++)
{
if((*temp_track)[j].size()==1 && (*temp_track)[j][0].buff_round >= 2)
@@ -191,7 +191,7 @@ void Track_Init_Direct_Tracking::point_track_head_asso( std::vector <std::vector
vr_point=point_process[i].Velocity;
double r_point=point_process[i].Range;
double h_point = point_process[i].Height;
double T_point = point_process[i].CPI_Time;
double T_point = static_cast<double>(point_process[i].CPI_Time);
//航迹信息
double x_track_head, y_track_head;
@@ -199,7 +199,7 @@ void Track_Init_Direct_Tracking::point_track_head_asso( std::vector <std::vector
y_track_head=(*temp_track)[j][0].X[2];
double v_track_head=(*temp_track)[j][0].vr;
double h_track_head = (*temp_track)[j][0].height;
double T_track_head = (*temp_track)[j][0].T;
double T_track_head = static_cast<double>((*temp_track)[j][0].T);
//距离差
double dis = sqrt(pow(x_point-x_track_head,2)+pow(y_point-y_track_head,2));
@@ -225,8 +225,8 @@ void Track_Init_Direct_Tracking::point_track_head_asso( std::vector <std::vector
&& vr_point*v_track_head>0 )//&& fabs(vr_point-v_track_head)/fabs(v_track_head)<0.2 && fabs(h_point-h_track_head)<=r_point*SIGMA_E
{
struct Asso_info asso_info_tmp;
asso_info_tmp.point_idx = i+1;
asso_info_tmp.track_idx = j+1;
asso_info_tmp.point_idx = static_cast<int>(i)+1;
asso_info_tmp.track_idx = static_cast<int>(j)+1;
asso_info.push_back(asso_info_tmp);
(*temp_track)[j][0].asso_flag = 1;
point_process[i].Use_Flag = 1;
@@ -237,7 +237,7 @@ void Track_Init_Direct_Tracking::point_track_head_asso( std::vector <std::vector
}
// temp_track中加入新关联上的临时航迹
for (int i = 0 ; i<asso_info.size();i++ )
for (size_t i = 0 ; i<asso_info.size();i++ )
{
(*temp_track).push_back(std::vector <Temp_track> ());
@@ -370,29 +370,29 @@ void Track_Init_Direct_Tracking::tmp_track_to_trust_track( std::vector<Trust_Tr
Trust_Track_Output[*Trust_track_num_Output-1][j].Track_Index=track_ID;
Trust_Track_Output[*Trust_track_num_Output-1][j].Point_Sum=L;
Trust_Track_Output[*Trust_track_num_Output-1][j].Range=(*Iter)[j].r;
Trust_Track_Output[*Trust_track_num_Output-1][j].Azimuth=(*Iter)[j].azi/PI*180;
Trust_Track_Output[*Trust_track_num_Output-1][j].Elevation=asin((*Iter)[j].height/(*Iter)[j].r)/PI*180;
Trust_Track_Output[*Trust_track_num_Output-1][j].Range_V=sqrt(pow((*Iter)[j].X[1],2)+pow((*Iter)[j].X[3],2));
Trust_Track_Output[*Trust_track_num_Output-1][j].z=(*Iter)[j].height;
Trust_Track_Output[*Trust_track_num_Output-1][j].Amplitude=(*Iter)[j].Amp;
Trust_Track_Output[*Trust_track_num_Output-1][j].track_snr = (*Iter)[j].snr;
Trust_Track_Output[*Trust_track_num_Output-1][j].track_rcs = (*Iter)[j].RCS;
Trust_Track_Output[*Trust_track_num_Output-1][j].Range=static_cast<float>((*Iter)[j].r);
Trust_Track_Output[*Trust_track_num_Output-1][j].Azimuth=static_cast<float>((*Iter)[j].azi/PI*180);
Trust_Track_Output[*Trust_track_num_Output-1][j].Elevation=static_cast<float>(asin((*Iter)[j].height/(*Iter)[j].r)/PI*180);
Trust_Track_Output[*Trust_track_num_Output-1][j].Range_V=static_cast<float>(sqrt(pow((*Iter)[j].X[1],2)+pow((*Iter)[j].X[3],2)));
Trust_Track_Output[*Trust_track_num_Output-1][j].z=static_cast<float>((*Iter)[j].height);
Trust_Track_Output[*Trust_track_num_Output-1][j].Amplitude=static_cast<float>((*Iter)[j].Amp);
Trust_Track_Output[*Trust_track_num_Output-1][j].track_snr = static_cast<float>((*Iter)[j].snr);
Trust_Track_Output[*Trust_track_num_Output-1][j].track_rcs = static_cast<float>((*Iter)[j].RCS);
double Direction_Angle;
Direction_Angle=atan2((*Iter)[j].X[3],(*Iter)[j].X[1]);
if(Direction_Angle<0)
Direction_Angle=Direction_Angle+2*PI;
Trust_Track_Output[*Trust_track_num_Output-1][j].Direction_Angle=Direction_Angle/PI*180;
Trust_Track_Output[*Trust_track_num_Output-1][j].Direction_Angle=static_cast<float>(Direction_Angle/PI*180);
Trust_Track_Output[*Trust_track_num_Output-1][j].track_time=((*Iter)[j].T)/1000.0;
Trust_Track_Output[*Trust_track_num_Output-1][j].x=(*Iter)[j].X[0];
Trust_Track_Output[*Trust_track_num_Output-1][j].v_x=(*Iter)[j].X[1];
Trust_Track_Output[*Trust_track_num_Output-1][j].y=(*Iter)[j].X[2];
Trust_Track_Output[*Trust_track_num_Output-1][j].v_y=(*Iter)[j].X[3];
Trust_Track_Output[*Trust_track_num_Output-1][j].range_point=(*Iter)[j].r;
Trust_Track_Output[*Trust_track_num_Output-1][j].azi_point=(*Iter)[j].azi/PI*180;
Trust_Track_Output[*Trust_track_num_Output-1][j].elev_point=asin((*Iter)[j].height/(*Iter)[j].r)/PI*180;
Trust_Track_Output[*Trust_track_num_Output-1][j].vr_point=(*Iter)[j].vr;
Trust_Track_Output[*Trust_track_num_Output-1][j].track_time=static_cast<float>(((*Iter)[j].T)/1000.0);
Trust_Track_Output[*Trust_track_num_Output-1][j].x=static_cast<float>((*Iter)[j].X[0]);
Trust_Track_Output[*Trust_track_num_Output-1][j].v_x=static_cast<float>((*Iter)[j].X[1]);
Trust_Track_Output[*Trust_track_num_Output-1][j].y=static_cast<float>((*Iter)[j].X[2]);
Trust_Track_Output[*Trust_track_num_Output-1][j].v_y=static_cast<float>((*Iter)[j].X[3]);
Trust_Track_Output[*Trust_track_num_Output-1][j].range_point=static_cast<float>((*Iter)[j].r);
Trust_Track_Output[*Trust_track_num_Output-1][j].azi_point=static_cast<float>((*Iter)[j].azi/PI*180);
Trust_Track_Output[*Trust_track_num_Output-1][j].elev_point=static_cast<float>(asin((*Iter)[j].height/(*Iter)[j].r)/PI*180);
Trust_Track_Output[*Trust_track_num_Output-1][j].vr_point=static_cast<float>((*Iter)[j].vr);
Trust_Track_Output[*Trust_track_num_Output-1][j].point_type=0;
Trust_Track_Output[*Trust_track_num_Output-1][j].Flag_Point=1;
Trust_Track_Output[*Trust_track_num_Output-1][j].Track_Mode=1;//跟踪模式 TWS 0
@@ -1,4 +1,4 @@
#ifndef TRACK_INIT_DIRECT_TRACKING_H
#ifndef TRACK_INIT_DIRECT_TRACKING_H
#define TRACK_INIT_DIRECT_TRACKING_H
#include "data_process_class_dll.h"
#include "parameters.h"