54 lines
1.4 KiB
C++
54 lines
1.4 KiB
C++
#pragma once
|
|
///
|
|
/// 计算卫星轨道
|
|
///
|
|
|
|
//#define EIGEN_USE_MKL_ALL
|
|
//#define EIGEN_VECTORIZE_SSE4_2
|
|
//#include <mkl.h>
|
|
// 本地方法
|
|
#include "baseTool.h"
|
|
|
|
#include <iostream>
|
|
#include <Eigen/Core>
|
|
#include <Eigen/Dense>
|
|
#include <time.h>
|
|
//#include <mkl.h>
|
|
//#include <armadillo>
|
|
|
|
|
|
using namespace std;
|
|
using namespace Eigen;
|
|
//using namespace arma;
|
|
|
|
|
|
/// <summary>
|
|
/// 多项式轨道模型
|
|
/// </summary>
|
|
class OrbitPoly {
|
|
public:
|
|
//OrbitPoly(std::string orbitModelPath);
|
|
OrbitPoly();
|
|
OrbitPoly(int polynum, Eigen::MatrixX<double> polySatellitePara, double SatelliteModelStartTime);
|
|
~OrbitPoly();
|
|
|
|
Eigen::MatrixX<double> SatelliteSpacePoint(Eigen::MatrixX<double> satellitetime);
|
|
Eigen::MatrixX<double> SatelliteSpacePoint(long double satellitetime);
|
|
public:
|
|
int polynum;
|
|
Eigen::MatrixX<double> polySatellitePara;
|
|
double SatelliteModelStartTime;
|
|
};
|
|
|
|
|
|
|
|
/// <summary>
|
|
/// 获取指定时刻的卫星轨道坐标
|
|
/// </summary>
|
|
/// <param name="satellitetime">卫星时刻</param>
|
|
/// <param name="SatelliteModelStartTime">模型起算时间</param>
|
|
/// <param name="polySatellitePara">模型参数[x1,y1,z1,vx1,vy1,vz1; x2,y2,z2,vx2,vy2,vz2; ..... ]</param>
|
|
/// <param name="polynum">模型参数数量</param>
|
|
/// <returns>卫星坐标</returns>
|
|
Eigen::MatrixX<double> SatelliteSpacePoints(Eigen::MatrixX<double> &satellitetime, double SatelliteModelStartTime, Eigen::MatrixX<double>& polySatellitePara, int polynum = 4);
|