RasterProcessTool/Toolbox/SimulationSARTool/SimulationSAR/SARSatelliteSimulationAbstr...

289 lines
9.9 KiB
C
Raw Normal View History

#pragma once
/*****************************************************************//**
* \file SARSatelliteSimulationAbstractCls.h
* \brief <EFBFBD><EFBFBD><EFBFBD><EFBFBD>SAR<EFBFBD><EFBFBD><EFBFBD>Ƿ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>еó<EFBFBD><EFBFBD><EFBFBD>ģ<EFBFBD><EFBFBD>,<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>һЩ<EFBFBD><EFBFBD><EFBFBD>õĽ<EFBFBD><EFBFBD>
* <EFBFBD><EFBFBD>Ҫ<EFBFBD><EFBFBD><EFBFBD><EFBFBD>
*
* 1. <EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>״̬
* 2. <EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ָ<EFBFBD><EFBFBD>״̬<EFBFBD><EFBFBD>ɨ<EFBFBD><EFBFBD><EFBFBD>ǡ<EFBFBD>ָ<EFBFBD><EFBFBD><EFBFBD><EFBFBD>
* 3. <EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>߷<EFBFBD><EFBFBD><EFBFBD>ͼ<EFBFBD><EFBFBD><EFBFBD><EFBFBD> <EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ָ<EFBFBD><EFBFBD>Ϊ0<EFBFBD>ȣ<EFBFBD>Z->Y <EFBFBD><EFBFBD> theta , X->Y phi )
* 4. <EFBFBD><EFBFBD><EFBFBD>Dz<EFBFBD><EFBFBD><EFBFBD>(Ƶ<EFBFBD>ʡ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ʱ<EFBFBD>PRF<EFBFBD><EFBFBD>Fs)
* <EFBFBD><EFBFBD><EFBFBD>߷<EFBFBD><EFBFBD><EFBFBD>ͼ <EFBFBD><EFBFBD> phi=0 <EFBFBD><EFBFBD> X<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>з<EFBFBD><EFBFBD><EFBFBD>һ<EFBFBD>£<EFBFBD><EFBFBD><EFBFBD>ʱ G(phi)>G(theta) <EFBFBD><EFBFBD> G(V)>G(H) ˮƽ<EFBFBD><EFBFBD><EFBFBD><EFBFBD>
* <EFBFBD><EFBFBD><EFBFBD>߷<EFBFBD><EFBFBD><EFBFBD>ͼ <EFBFBD><EFBFBD> phi=90 <EFBFBD><EFBFBD> y<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>з<EFBFBD><EFBFBD><EFBFBD>һ<EFBFBD>£<EFBFBD><EFBFBD><EFBFBD>ʱ G(phi)<G(theta) <EFBFBD><EFBFBD> G(V)<G(H) <EFBFBD><EFBFBD>ֱ<EFBFBD><EFBFBD><EFBFBD><EFBFBD>
* \author <EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
* \date October 2024
*********************************************************************/
#include "BaseConstVariable.h"
#include "LogInfoCls.h"
#include <QString>
#include <vector>
#include <Eigen/Core>
#include <Eigen/Dense>
#include "GeoOperator.h"
2025-02-06 13:18:25 +00:00
/// <summary>
/// <20><><EFBFBD>߷<EFBFBD><DFB7><EFBFBD>ͼ<EFBFBD>Ļ<EFBFBD>ȡ
/// ע<><D7A2><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ʹ<EFBFBD><CAB9> ˫<><CBAB><EFBFBD>Բ<EFBFBD>ֵ
/// </summary>
class AbstractRadiationPattern {
public:
AbstractRadiationPattern();
virtual ~AbstractRadiationPattern();
public:
virtual double getGain(double theta, double phi);
virtual std::vector<RadiationPatternGainPoint> getGainList();
virtual ErrorCode getGain(double& theta, double& phi, double& GainValue);
virtual ErrorCode getGainLinear(double& theta, double& phi, double& GainValue);
double getGainLearThetaPhi(double theta, double phi);
virtual ErrorCode setGain(double theta, double phi, double GainValue);
virtual ErrorCode RecontructGainMatrix(double threshold=-3);
virtual std::vector<double> getThetas();
virtual std::vector<double> getPhis();
virtual Eigen::MatrixXd getGainMatrix();
virtual double getMaxTheta();
virtual double getMinTheta();
virtual double getMaxPhi();
virtual double getMinPhi();
private:
std::vector<RadiationPatternGainPoint> GainMap; // <20><><EFBFBD>߷<EFBFBD><DFB7><EFBFBD>ͼ
std::vector<double> thetas;
std::vector<double> phis;
Eigen::MatrixXd GainMatrix;
double maxGain, maxThetaGain, maxPhiGain;
double mintheta, maxtheta, minphi, maxphi;
double EdgethetaMin, EdgethetaMax;
double EdgeXMin, EdgeXMax;
};
/// <summary>
/// <20><><EFBFBD>ǹ<EFBFBD><C7B9><EFBFBD>ģ<EFBFBD>ͣ<EFBFBD><CDA3><EFBFBD><EFBFBD><EFBFBD>̬<EFBFBD><CCAC><EFBFBD><EFBFBD>
/// <20><><EFBFBD><EFBFBD><EFBFBD>ر<EFBFBD>˵<EFBFBD><CBB5><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>нǶȶ<C7B6><C8B6>ǻ<EFBFBD><C7BB><EFBFBD><EFBFBD><EFBFBD>
/// <20><><EFBFBD><EFBFBD>û<EFBFBD><C3BB><EFBFBD>ر<EFBFBD>˵<EFBFBD><CBB5><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ϵ<EFBFBD>ο<EFBFBD>GF3:
/// <20><><EFBFBD><EFBFBD>չ<EFBFBD><D5B9><EFBFBD>ŷ<EFBFBD><C5B7><EFBFBD><EFBFBD><EFBFBD>ΪX<CEAA>
/// X<><EFBFBD><E1B6A8>Ϊ<EFBFBD><CEAA> <20><><EFBFBD>߰ڶ<DFB0><DAB6><EFBFBD>Ϊ0ʱ<30><CAB1><EFBFBD><EFBFBD><EFBFBD>Ƿ<EFBFBD><C7B7>з<EFBFBD><D0B7><EFBFBD>
/// Z<><EFBFBD><E1B6A8>Ϊ<EFBFBD><CEAA><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> Z<><5A>Ӧ<EFBFBD><D3A6>Ϊ<EFBFBD><CEAA><EFBFBD><EFBFBD>ָ<EFBFBD><D6B8><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
/// H <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ϊ <20><>ֱ<EFBFBD><D6B1><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Z->X ƽ<><C6BD>
/// V <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ϊ ˮƽ<CBAE><C6BD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Z->Y ƽ<><C6BD>
/// -Z
/// |
/// [=====]X<---Y---[======]
/// _
/// ___
/// _____
/// _________
///
///
///
/// -Z
/// ^
/// |
/// X<-Fly-Y
/// _
/// ___
/// _______
///
/// <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
/// <20><><EFBFBD><EFBFBD>(+<2B><> <20><><EFBFBD>ӣ<EFBFBD>-<2D><>
/// Z Z Z
/// ^ \ /
/// | \ /
/// x<--O--- x<--O--- x<--O---
/// | |\ /|
/// \ /
///
///
/// X=Y x Z <20>ڶ<EFBFBD><DAB6><EFBFBD>(-<2D><> <20>ڶ<EFBFBD><DAB6>ǣ<EFBFBD>+<2B><>
/// Z Z Z
/// ^ \ /
/// | \ /
/// y<--X--- y<--X--- y<--X---
/// | |\ /|
/// \ /
/// ע<><D7A2><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ʱ<EFBFBD><EFBFBD>ա<EFBFBD><D5A1>ϳɿ׾<C9BF><D7BE>״<EFBFBD><D7B4><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><E3B7A8>ʵ<EFBFBD>֣<EFBFBD>cumming<6E><67><EFBFBD>У<EFBFBD>ǰ<EFBFBD><C7B0>Ϊ - <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ϊ +
///
/// </summary>
class AbstractSatelliteOribtModel {
public:
virtual ~AbstractSatelliteOribtModel();
public: // <20><><EFBFBD>ǹ<EFBFBD><C7B9><EFBFBD><EFBFBD>ڵ<EFBFBD>
virtual SatelliteOribtNode getSatelliteOribtNode(double& timeFromStartTime,bool& antAzAngleFlag); // <20><>ȡ<EFBFBD><C8A1><EFBFBD><EFBFBD><EFBFBD>ڵ<EFBFBD>
virtual ErrorCode getSatelliteOribtNode(double& timeFromStartTime, SatelliteOribtNode& node, bool& antAzAngleFlag); // <20><>ȡ<EFBFBD><C8A1><EFBFBD><EFBFBD><EFBFBD>ڵ<EFBFBD>
virtual ErrorCode getSatelliteAntDirectNormal(SatelliteOribtNode& Rs, Vector3D& Rt, SatelliteAntDirect& antNode); // <20><><EFBFBD><EFBFBD>Ŀ<EFBFBD><C4BF><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>߷<EFBFBD><DFB7><EFBFBD>ͼ<EFBFBD>е<EFBFBD>λ<EFBFBD><CEBB>
public: // <20><><EFBFBD>ǹ<EFBFBD><C7B9><EFBFBD>ģ<EFBFBD>͵IJο<C4B2>ʱ<EFBFBD><CAB1><EFBFBD>ڵ<EFBFBD>
virtual void setSatelliteOribtStartTime(long double oribtStartTime);// <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ģ<EFBFBD>Ͳο<CDB2>ʱ<EFBFBD><CAB1>
virtual long double getSatelliteOribtStartTime();// <20><>ȡ<EFBFBD><C8A1><EFBFBD><EFBFBD>ģ<EFBFBD>Ͳο<CDB2>ʱ<EFBFBD><CAB1>
public: // <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ز<EFBFBD><D8B2><EFBFBD>
virtual void setbeamAngle(double beamAngle,bool RightLook);// <20><><EFBFBD>ò<EFBFBD>λ<EFBFBD><CEBB>
public: // <20><><EFBFBD>߰ڶ<DFB0><DAB6><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ز<EFBFBD><D8B2><EFBFBD>
virtual void setAzAngleRange(double cycletime,double minAzAngle,double maxAzAngle,double referenceAzAngle, double referenceTimeFromStartTime);//<2F><>λ<EFBFBD>DZ任ѭ<E4BBBB><D1AD>ʱ<EFBFBD><CAB1> ;<3B><>λ<EFBFBD>DZ任<C7B1><E4BBBB>Χ<EFBFBD><CEA7> <20>ض<EFBFBD>ʱ<EFBFBD><CAB1><EFBFBD>ķ<EFBFBD>λ<EFBFBD>ǣ<EFBFBD><C7A3><EFBFBD><EFBFBD>ڼ<EFBFBD><DABC>㷽λ<E3B7BD>DZ仯<C7B1><E4BBAF><EFBFBD><EFBFBD>
virtual double getAzAngleInCurrentTimeFromStartTime(double& currentTime);// <20><>ȡ<EFBFBD><C8A1>ǰʱ<C7B0><CAB1><EFBFBD><EFBFBD> <20><><EFBFBD>߰ڶ<DFB0><DAB6><EFBFBD>
virtual ErrorCode getAzAngleInCurrentTimeFromStartTime(double& currentTime, double& AzAngle);// <20><>ȡ<EFBFBD><C8A1>ǰʱ<C7B0><CAB1><EFBFBD><EFBFBD> <20><><EFBFBD>߰ڶ<DFB0><DAB6><EFBFBD>
public: // <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ԭʼ<D4AD><CABC><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>µ<EFBFBD><C2B5><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ϵ<EFBFBD>ĵ<EFBFBD><C4B5><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ȼ<EFBFBD><C8BB><EFBFBD><EFBFBD>-Z <20><>Ϊ <20><><EFBFBD><EFBFBD>ָ<EFBFBD><D6B8><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
virtual void setAntnnaAxisX(double X,double Y,double Z); // <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>X<EFBFBD><58>ָ<EFBFBD><D6B8>
virtual void setAntnnaAxisY(double X, double Y, double Z); // <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>X<EFBFBD><58>ָ<EFBFBD><D6B8>
virtual void setAntnnaAxisZ(double X, double Y, double Z); // <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>X<EFBFBD><58>ָ<EFBFBD><D6B8>
2024-11-25 17:51:20 +00:00
virtual ErrorCode getZeroDopplerAntDirect(SatelliteOribtNode& node);// <20><>ȡ0<C8A1><30><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>߷<EFBFBD><DFB7><EFBFBD>
virtual ErrorCode getAntnnaDirection( SatelliteOribtNode &node); // <20><>ȡ<EFBFBD><C8A1><EFBFBD><EFBFBD>ָ<EFBFBD><D6B8><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
public:
virtual double getPt();
virtual double getGri();
virtual void setPt(double Pt);
virtual void setGri(double gri);
};
/// <summary>
/// SAR<41><52><EFBFBD>ǵ<EFBFBD><C7B5><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ϣ
/// 1. <20><><EFBFBD><EFBFBD>ϵͳΪ WGS84<38><34><EFBFBD><EFBFBD><EFBFBD>굥λ<EAB5A5><CEBB> <20>ף<EFBFBD>ʱ<EFBFBD>䵥λ<E4B5A5>ǣ<EFBFBD> <20><>
/// 2. ע<><D7A2>һ<EFBFBD><D2BB><EFBFBD><EFBFBD>˵PRFͼ<46><CDBC><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>أ<EFBFBD>Fs <20><> ͼ<><CDBC><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ص<EFBFBD>
/// 3.
/// </summary>
class AbstractSARSatelliteModel
{
public: // <20><><EFBFBD><EFBFBD>ģ<EFBFBD><C4A3>
virtual SatelliteOribtNode getSatelliteOribtNode(double& timeFromStartTime, bool& antAzAngleFlag);// <20><><EFBFBD>ù<EFBFBD><C3B9><EFBFBD><EFBFBD>ڵ㣬
virtual ErrorCode getSatelliteOribtNode(double& timeFromStartTime, SatelliteOribtNode& node, bool& antAzAngleFlag); // <20><>ȡ<EFBFBD><C8A1><EFBFBD><EFBFBD><EFBFBD>ڵ<EFBFBD>
virtual ErrorCode getSatelliteAntDirectNormal(SatelliteOribtNode& Rs, Vector3D& Rt, SatelliteAntDirect& antNode); // <20><><EFBFBD><EFBFBD>Ŀ<EFBFBD><C4BF><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>߷<EFBFBD><DFB7><EFBFBD>ͼ<EFBFBD>е<EFBFBD>λ<EFBFBD><CEBB>
virtual void setSatelliteOribtModel(std::shared_ptr<AbstractSatelliteOribtModel> model); // <20><><EFBFBD>ù<EFBFBD><C3B9><EFBFBD>ģ<EFBFBD><C4A3>
public:// Ӱ<><D3B0><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ʱ<EFBFBD><CAB1>
virtual void setSARImageStartTime(long double imageStartTime);// <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ʼʱ<CABC><CAB1>
virtual void setSARImageEndTime(long double imageEndTime); // <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ʱ<EFBFBD><CAB1>
virtual double getSARImageStartTime();
virtual double getSARImageEndTime();
virtual double getNearRange(); // <20><>б<EFBFBD><D0B1> -- <20><>ʱ<EFBFBD><CAB1><EFBFBD><EFBFBD>
virtual void setNearRange(double NearRange);
virtual double getFarRange(); // <20><>Զб<D4B6><D0B1>
virtual void setFarRange(double FarRange);
virtual bool getIsRightLook() ; // <20>Ƿ<EFBFBD><C7B7><EFBFBD><EFBFBD><EFBFBD>
virtual void setIsRightLook(bool isR) ;
public: // <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
virtual void setCenterFreq(double Freq); // <20><><EFBFBD><EFBFBD>Ƶ<EFBFBD><C6B5>
virtual double getCenterFreq();
virtual void setCenterLamda(double Lamda); // <20><><EFBFBD><EFBFBD>
virtual double getCenterLamda();
virtual void setBandWidth(double bandwidth); // <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Χ
virtual double getBandWidth();
virtual QVector<double> getFreqList(); // <20><>ȡƵ<C8A1><C6B5><EFBFBD>б<EFBFBD>
2025-01-06 11:56:45 +00:00
virtual void setRefphaseRange(double refRange);
virtual double getRefphaseRange();
virtual POLARTYPEENUM getPolarType();// <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
virtual void setPolarType(POLARTYPEENUM type);
public: // <20><><EFBFBD><EFBFBD>PRF<52><46>FS
virtual void setPRF(double prf); // <20><>λ<EFBFBD><CEBB><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ƶ<EFBFBD><C6B5>
virtual double getPRF();
virtual double getFs(); // <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ƶ<EFBFBD><C6B5>
virtual void setFs(double fs);
virtual double getCenterLookAngle() ;
virtual void setCenterLookAngle(double angle) ;
public:// <20><><EFBFBD>߷<EFBFBD><DFB7><EFBFBD>ͼ
virtual void setTransformRadiationPattern(std::shared_ptr<AbstractRadiationPattern> radiationPanttern); // <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><E4B7BD>ͼ
virtual void setReceiveRadiationPattern(std::shared_ptr<AbstractRadiationPattern> radiationPanttern); // V <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>շ<EFBFBD><D5B7><EFBFBD>ͼ
virtual std::shared_ptr<AbstractRadiationPattern> getTransformRadiationPattern();// H <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><E4B7BD>ͼ
virtual std::shared_ptr<AbstractRadiationPattern> getReceiveRadiationPattern();// V <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><E4B7BD>ͼ
public:
virtual double getPt();
virtual double getGri();
virtual void setPt(double Pt);
virtual void setGri(double gri);
2025-02-17 09:13:18 +00:00
private:
double DopplerParametersReferenceTime;
std::vector<double> DopplerCentroidCoefficients;
std::vector<double> DopplerRateValuesCoefficients;
public:
virtual double getDopplerParametersReferenceTime() ;
virtual void setDopplerParametersReferenceTime(double time) ;
virtual std::vector<double> getDopplerCentroidCoefficients() ;
virtual void setDopplerCentroidCoefficients(std::vector<double> DopplerCentroids) ;
virtual std::vector<double> getDopplerRateValuesCoefficients() ;
virtual void setDopplerRateValuesCoefficients(std::vector<double> DopplerRateValues) ;
};
/** ͨ<>ú<EFBFBD><C3BA><EFBFBD> ************************************************************************** */
/// <summary>
/// <20><>xml<6D>ļ<EFBFBD><C4BC>ж<EFBFBD>ȡ<EFBFBD><C8A1><EFBFBD>Ǽ<EFBFBD><C7BC><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ڵ<EFBFBD>
/// </summary>
/// <param name="xmlPath"></param>
/// <param name="nodes"></param>
/// <returns></returns>
ErrorCode ReadSateGPSPointsXML(QString xmlPath, std::vector<SatelliteOribtNode>& nodes);
std::vector<SatelliteOribtNode> FilterSatelliteOribtNode(std::vector<SatelliteOribtNode>& nodes, double startTime, double endTime,long minCount=10);
std::shared_ptr<AbstractRadiationPattern> CreateAbstractRadiationPattern(std::vector<RadiationPatternGainPoint> antPatternPoints);
std::vector<RadiationPatternGainPoint> ReadGainFile(QString antPatternFilePath);
/** <20><><EFBFBD>߷<EFBFBD><DFB7><EFBFBD>ͼ<EFBFBD>ļ<EFBFBD>չʾ ********************************************************************** */
/** <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ƶ<EFBFBD>ʼ<EFBFBD><CABC><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> ********************************************************************** */
/**
* <EFBFBD>ο<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
* <EFBFBD>ϳɿ׾<EFBFBD><EFBFBD>״<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ʵ<EFBFBD>֣<EFBFBD>cumming <EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>, <EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <EFBFBD>ϳɿ׾<EFBFBD><EFBFBD>ĸ<EFBFBD><EFBFBD><EFBFBD>
* <EFBFBD>״<EFBFBD><EFBFBD>źŴ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Mark A.Richards,<EFBFBD><EFBFBD><EFBFBD>ϵ<EFBFBD><EFBFBD><EFBFBD>
* <EFBFBD>ϳɿ׾<EFBFBD><EFBFBD>״<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ԭ<EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ƥ<EFBFBD><EFBFBD><EFBFBD><EFBFBD>
* InSARԭ<EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ӧ<EFBFBD>ã<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
* <EFBFBD><EFBFBD><EFBFBD><EFBFBD>SAR<EFBFBD>ز<EFBFBD><EFBFBD>źŷ<EFBFBD><EFBFBD><EFBFBD><EFBFBD>о<EFBFBD><EFBFBD><EFBFBD><EFBFBD>ֽ<EFBFBD><EFBFBD><EFBFBD>
* <EFBFBD><EFBFBD><EFBFBD>غϳɿ׾<EFBFBD><EFBFBD>״<EFBFBD>ԭʼ<EFBFBD>ز<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ģ<EFBFBD><EFBFBD><EFBFBD>о<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
* SAR<EFBFBD>ز<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ź<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ܱȽ<EFBFBD><EFBFBD>о<EFBFBD><EFBFBD><EFBFBD>Τ<EFBFBD><EFBFBD><EFBFBD><EFBFBD>
* <EFBFBD><EFBFBD><EFBFBD>غϳɿ׾<EFBFBD><EFBFBD>״<EFBFBD>Ӱ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>У<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>о<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ѧ
* ע<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ռ<EFBFBD><EFBFBD>ʽ <EFBFBD><EFBFBD> <EFBFBD><EFBFBD>ѧ<EFBFBD>Ķ<EFBFBD><EFBFBD><EFBFBD><EFBFBD>ռ<EFBFBD><EFBFBD>ʽ<EFBFBD><EFBFBD><EFBFBD>ڲ<EFBFBD><EFBFBD><EFBFBD>м<EFBFBD>ʡ<EFBFBD><EFBFBD><EFBFBD><EFBFBD>һЩ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
* .
*/
// <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ƶ<EFBFBD><C6B5>
double getDopplerCenterFreq(double &lamda,double &R,Vector3D &Rs,Vector3D &Rt,Vector3D &Vs,Vector3D &Vt);
// <20><><EFBFBD><EFBFBD><EFBFBD>յ<EFBFBD>Ƶ<EFBFBD>ʣ<EFBFBD>б<EFBFBD>ʣ<EFBFBD>
double getDopplerFreqRate(double& lamda, double& R, Vector3D& Rs, Vector3D& Rt, Vector3D& Vs, Vector3D& Vt,Vector3D &Ast);