RasterProcessTool/GF3CalibrationAndOrthLib/GF3PSTNClass.h

109 lines
3.7 KiB
C++

#pragma once
#ifndef __GF3PSTNCLASS_H__
#define __GF3PSTNCLASS_H__
#include "gf3calibrationandorthlib_global.h"
#include "LogInfoCls.h"
#include "BaseConstVariable.h"
#include "GeoOperator.h"
#include <QString>
#include <vector>
#include <memory>
/// <summary>
/// 多项式轨道模型
/// </summary>
class GF3CALIBRATIONANDORTHLIB_EXPORT GF3PolyfitSatelliteOribtModel
{
public:
GF3PolyfitSatelliteOribtModel();
~GF3PolyfitSatelliteOribtModel() ;
public:
QString getSatelliteOribtModelParamsString();
public: // 卫星轨道节点
virtual SatelliteOribtNode getSatelliteOribtNode(double& timeFromStartTime, bool& antAzAngleFlag) ; // 获取轨道节点
virtual ErrorCode getSatelliteOribtNode(double& timeFromStartTime, SatelliteOribtNode& node, bool& antAzAngleFlag) ; // 获取轨道节点
virtual ErrorCode getSatelliteAntDirectNormal(SatelliteOribtNode& Rs, Vector3D& Rt, SatelliteAntDirect& antNode); // 计算目标在天线方向图中的位置
public: // 卫星轨道模型的参考时间节点
virtual void setSatelliteOribtStartTime(long double oribtStartTime) ;// 设置卫星模型参考时间
virtual long double getSatelliteOribtStartTime() ;// 获取卫星模型参考时间
public: // 入射角相关参数
virtual void setbeamAngle(double beamAngle, bool RightLook) ;// 设置波位角
public: // 天线摆动角相关参数
virtual void setAzAngleRange(double cycletime, double minAzAngle, double maxAzAngle, double referenceAzAngle, double referenceTimeFromStartTime) ;//方位角变换循环时间 ;方位角变换范围; 特定时间的方位角,用于计算方位角变化情况
virtual double getAzAngleInCurrentTimeFromStartTime(double& currentTime) ;// 获取当前时间的 天线摆动角
virtual ErrorCode getAzAngleInCurrentTimeFromStartTime(double& currentTime, double& AzAngle);// 获取当前时间的 天线摆动角
public: // 定义在原始天线坐标下的天线坐标系的调整,其中仍然定义-Z 轴为 天线指向方向
virtual void setAntnnaAxisX(double X, double Y, double Z) ; // 设置天线X轴指向
virtual void setAntnnaAxisY(double X, double Y, double Z) ; // 设置天线X轴指向
virtual void setAntnnaAxisZ(double X, double Y, double Z) ; // 设置天线X轴指向
virtual ErrorCode getAntnnaDirection(SatelliteOribtNode& node); // 获取天线指向方向
virtual ErrorCode getZeroDopplerAntDirect(SatelliteOribtNode& node);
private: // 变量
long double oribtStartTime; // 卫星模型参考时间
double beamAngle; // 波位角
bool RightLook; // 左右视
double cycletime; // 方位角变换循环时间
double minAzAngle; // 方位角变换范围
double maxAzAngle; // 方位角变换范围
double referenceAzAngle; // 特定时间的方位角,用于计算方位角变化情况
double referenceTimeFromStartTime; // 特定时间的方位角,用于计算方位角变化情况
Point3 AntnnaAxisX; // 天线X轴指向
Point3 AntnnaAxisY; // 天线Y轴指向
Point3 AntnnaAxisZ; // 天线Z轴指向
public: // 增加节点
void addOribtNode(SatelliteOribtNode node);
ErrorCode polyFit(int polynum = 3, bool input_timeFromReferenceTime = false);
private: // 轨道节点
std::vector<SatelliteOribtNode> oribtNodes;
std::vector<double> polyfitPx; // 空间坐标
std::vector<double> polyfitPy;
std::vector<double> polyfitPz;
std::vector<double> polyfitVx; // 速度拟合参数
std::vector<double> polyfitVy;
std::vector<double> polyfitVz;
double Pxchisq; // 拟合误差 X2
double Pychisq;
double Pzchisq;
double Vxchisq;
double Vychisq;
double Vzchisq;
public:
virtual double getPt() ;
virtual double getGri() ;
virtual void setPt(double Pt) ;
virtual void setGri(double gri) ;
//virtual double getPt();
//virtual double getGri();
//virtual void setPt(double Pt);
//virtual void setGri(double gri);
private:
double Pt; // 发射电压
double Gri;// 系统增益
};
std::shared_ptr<GF3PolyfitSatelliteOribtModel> GF3CALIBRATIONANDORTHLIB_EXPORT CreataGF3PolyfitSatelliteOribtModel(std::vector<SatelliteOribtNode>& nodes, long double startTime, int polynum = 3);
#endif