资源简介
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 人脸数据库
- 下一篇:快递管理系统
相关资源
- coe2tle经典轨道根数转成二行轨道根数
- 一个比Harday-Littlewood猜想有效的计算公
- kettle 8.2
- Delphi XE10 Seattle移动开发指南完整版
- ThrottleStop_8.70.6
- liferay portal教程(多部)
- kettle组件简介.zip
- zw_xmuleea-11168271-1001BattleOverCities-HardV
- RT1052野火基于 RT-Thread 移植的littlevg
- ros小海龟定点移动程序
- kettle 数据过滤验证
- 3Kettle-----关联字典表的三种方法
- the little sas book 中文版
- Kettle在Linux的安装使用
- 10分钟搞定kettle源码部署
- turtlebot上hokuyo和gmapping建图和amcl导航
- 国家电网公司Kettle培训
- The Little SAS Book第四版中文版
- aliyun-kettle-odps-plugin-1.0.0包以及安装操
- Kettle教程详细解析各个控件
- 朱志刚译《中文-数字图像处理》美
- 数字图像处理Kenneth R.Castleman
- Pentaho-Data-Integration-完全自学手册.20
- Restlet Client
- 朱志刚译《中文-数字图像处理》美
- Pentaho Kettle解决方案:使用PDI构建开源
- 内含org.bouncycastle.jce包(加密签名)
- Bentley MicroStation CONNECT版Update410.00.00
- 英飞凌磁传感器 TLE5012b STM32F103 SPI 源
- the little sas book中文版
评论
共有 条评论