资源简介
Norad公布的TLE两行星历的计算源码,采用SGP4和SDP4模型,亲测可用,添加了自己的代码,关键地方中文注释,能迅速的由两行星历数据计算出每个时间的卫星轨道位置,俯仰角,并可转换成大地坐标经纬度。本人找了很久,对于没有学过天体物理学测量学的,可以用这个,相当于一个黑盒子,计算精度很高,8分决定超值。
代码片段和文件信息
//
// cEci.cpp
//
// Copyright (c) 2002-2003 Michael F. Henry
//
#include “stdafx.h“
#include “cEci.h“
#include “globals.h“
//////////////////////////////////////////////////////////////////////
// cEci Class
//////////////////////////////////////////////////////////////////////
cEci::cEci(const cVector &pos
const cVector &vel
const cJulian &date
bool IsAeUnits /* = true */)
{
m_pos = pos;
m_vel = vel;
m_date = date;
m_VecUnits = (IsAeUnits ? UNITS_AE : UNITS_NONE);
}
//////////////////////////////////////////////////////////////////////
// cEci(cCoordGeo& cJulian&)
// Calculate the ECI coordinates of the location “geo“ at time “date“.
// Assumes geo coordinates are km-based.
// Assumes the earth is an oblate spheroid as defined in WGS ‘72.
// Reference: The 1992 Astronomical Almanac page K11
// Reference: www.celestrak.com (Dr. TS Kelso)
cEci::cEci(const cCoordGeo &geo const cJulian &date)
{
m_VecUnits = UNITS_KM;
double mfactor = TWOPI * (OMEGA_E / SEC_PER_DAY);
double lat = geo.m_Lat;
double lon = geo.m_Lon;
double alt = geo.m_Alt;
// Calculate Local Mean Sidereal Time (theta)
double theta = date.toLMST(lon);
double c = 1.0 / sqrt(1.0 + F * (F - 2.0) * sqr(sin(lat)));
double s = sqr(1.0 - F) * c;
double achcp = (XKMPER_WGS72 * c + alt) * cos(lat);
m_date = date;
m_pos.m_x = achcp * cos(theta); // km
m_pos.m_y = achcp * sin(theta); // km
m_pos.m_z = (XKMPER_WGS72 * s + alt) * sin(lat); // km
m_pos.m_w = sqrt(sqr(m_pos.m_x) +
sqr(m_pos.m_y) +
sqr(m_pos.m_z)); // range km
m_vel.m_x = -mfactor * m_pos.m_y; // km / sec
m_vel.m_y = mfactor * m_pos.m_x;
m_vel.m_z = 0.0;
m_vel.m_w = sqrt(sqr(m_vel.m_x) + // range rate km/sec^2
sqr(m_vel.m_y));
}
//////////////////////////////////////////////////////////////////////////////
// toGeo()
// Return the corresponding geodetic position (based on the current ECI
// coordinates/Julian date).
// Assumes the earth is an oblate spheroid as defined in WGS ‘72.
// Side effects: Converts the position and velocity vectors to km-based units.
// Reference: The 1992 Astronomical Almanac page K12.
// Reference: www.celestrak.com (Dr. TS Kelso)
cCoordGeo cEci::toGeo()
{
ae2km(); // Vectors must be in kilometer-based units
double theta = AcTan(m_pos.m_y m_pos.m_x);
double lon = fmod(theta - m_date.toGMST() TWOPI);
if (lon < 0.0)
lon += TWOPI; // “wrap“ negative modulo
double r = sqrt(sqr(m_pos.m_x) + sqr(m_pos.m_y));
double e2 = F * (2.0 - F);
double lat = AcTan(m_pos.m_z r);
const double delta = 1.0e-07;
double phi;
double c;
do
{
phi = lat;
c = 1.0 / sqrt(1.0 - e2 * sqr(sin(phi)));
lat = AcT
属性 大小 日期 时间 名称
----------- --------- ---------- ----- ----
文件 3642 2007-08-07 19:49 norad\cEci.cpp
文件 1344 2007-08-07 19:49 norad\cEci.h
文件 7380 2009-01-14 22:47 norad\cJulian.cpp
文件 2467 2007-08-07 19:49 norad\cJulian.h
文件 8951 2009-01-02 13:30 norad\cNoradba
文件 1655 2007-08-07 19:49 norad\cNoradba
文件 24813 2007-08-09 21:33 norad\cNoradSDP4.cpp
文件 3238 2007-08-07 19:49 norad\cNoradSDP4.h
文件 4031 2007-08-09 21:33 norad\cNoradSGP4.cpp
文件 690 2007-08-07 19:49 norad\cNoradSGP4.h
文件 672 2007-08-07 19:49 norad\coord.cpp
文件 1131 2007-08-07 19:49 norad\coord.h
文件 4703 2009-01-02 22:27 norad\cOrbit.cpp
文件 3292 2009-01-02 13:30 norad\cOrbit.h
文件 4806 2007-08-07 19:49 norad\cSite.cpp
文件 1059 2007-08-07 19:49 norad\cSite.h
文件 12359 2007-08-07 19:49 norad\cTLE.cpp
文件 5241 2007-08-07 19:49 norad\cTLE.h
文件 1767 2007-08-07 19:49 norad\cVector.cpp
文件 761 2007-08-07 19:49 norad\cVector.h
文件 1391 2007-08-07 19:49 norad\globals.cpp
文件 2165 2007-08-07 19:49 norad\globals.h
文件 1788928 2012-12-21 15:07 norad\norad.ncb
文件 870 2012-12-21 14:57 norad\norad.sln
..A..H. 7680 2012-12-21 15:07 norad\norad.suo
文件 5444 2012-12-21 14:57 norad\norad.vcproj
文件 1403 2012-12-21 15:07 norad\norad.vcproj.LBDZ-11281449.Administrator.user
文件 2171 2009-01-03 09:29 norad\readme.txt
文件 642384 2009-01-25 17:46 norad\Release\norad.lib
..AD... 0 2009-01-25 17:46 norad\Release
............此处省略32个文件信息
- 上一篇:Yale 人脸数据库
- 下一篇:快递管理系统
相关资源
- lisp经典教程common lisp A Gentle Introduct
- Kettle 7.1 中文使用手册.docx.zip193183
- pentaho kettle solutions电子书及完整源码
- 数字图像处理K.R.Castleman)中文清晰版
- Hartley标定算法
- kettle8.0编译环境文件
- kettle5.0-api(engine part)
- ROS机器人turtlebot路径规划
- CutLeader(数控切割套料软件)v5.6.4绿
- kettle学习资料大全
- ReinforcementLearning.zip
- linux环境下部署kettle,执行kitchen.sh文
- Whitley_PDG574174_r0_61
- KETTLE用libwebkitgtk
- turtlebot3.tar.gz
- The Little SAS Enterprise Guide Book 无水印原
- Hands-On.Machine.Learning.with.Scikit-Lear
- Little Snitch 4 破解版
- 编程珠玑第2版•修订版.[美]JonBentle
- Kettle教程
- carte子服务器配置软件:yajsw-stable-1
- web应用集成kettle
- 缓存 队列 kettle
- kettle6.1.0.1-196 MyEclipse源码工程包 par
- 史上最强-Kettle-培训教程
- pentaho-kettle-master-8.3源码.zip
- Pentaho Kettle Solutions.pdf
- elasticsearch-bulk-insert-plugin-8.2.0.4-606.z
- GTK+修复工具64位.rar
- DataCastle轴承故障预测数据集
评论
共有 条评论