资源简介
NASA用于计算轨道的程序 c++版,可以很容易的计算任何时刻卫星的位置等参数
代码片段和文件信息
//
// 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 2005-10-16 19:29 SxP4Test\cEci.cpp
文件 1344 2005-09-29 21:56 SxP4Test\cEci.h
文件 7381 2005-10-06 21:32 SxP4Test\cJulian.cpp
文件 2467 2005-10-06 21:33 SxP4Test\cJulian.h
文件 9469 2005-10-06 21:14 SxP4Test\cNoradba
文件 1647 2005-09-29 21:56 SxP4Test\cNoradba
文件 24817 2005-10-06 21:17 SxP4Test\cNoradSDP4.cpp
文件 3238 2005-09-29 21:56 SxP4Test\cNoradSDP4.h
文件 4035 2005-10-06 21:18 SxP4Test\cNoradSGP4.cpp
文件 690 2005-09-29 21:56 SxP4Test\cNoradSGP4.h
文件 672 2005-09-29 21:56 SxP4Test\coord.cpp
文件 1131 2005-09-29 21:56 SxP4Test\coord.h
文件 4506 2005-10-06 22:23 SxP4Test\cOrbit.cpp
文件 3207 2005-10-15 14:30 SxP4Test\cOrbit.h
文件 7344 2008-10-29 14:21 SxP4Test\cSite.cpp
文件 1102 2008-10-29 14:19 SxP4Test\cSite.h
文件 12359 2005-09-29 21:56 SxP4Test\cTLE.cpp
文件 5241 2005-09-29 21:56 SxP4Test\cTLE.h
文件 1767 2005-09-29 21:56 SxP4Test\cVector.cpp
文件 761 2005-09-29 21:56 SxP4Test\cVector.h
文件 37589 2008-10-29 11:45 SxP4Test\Debug\cEci.obj
文件 0 2008-10-29 11:45 SxP4Test\Debug\cEci.sbr
文件 34372 2008-10-29 11:45 SxP4Test\Debug\cJulian.obj
文件 0 2008-10-29 11:45 SxP4Test\Debug\cJulian.sbr
文件 129882 2008-10-29 11:45 SxP4Test\Debug\cNoradba
文件 0 2008-10-29 11:45 SxP4Test\Debug\cNoradba
文件 81225 2008-10-29 11:45 SxP4Test\Debug\cNoradSDP4.obj
文件 0 2008-10-29 11:45 SxP4Test\Debug\cNoradSDP4.sbr
文件 32367 2008-10-29 11:45 SxP4Test\Debug\cNoradSGP4.obj
文件 0 2008-10-29 11:45 SxP4Test\Debug\cNoradSGP4.sbr
............此处省略42个文件信息
- 上一篇:合泰单片机C语言教程
- 下一篇:遥感图像融合程序 C++
评论
共有 条评论