🛰️航天仿真算法库 SpaceAST 0.3.1
载入中...
搜索中...
未找到
LocalHorizonalFrame.hpp
浏览该文件的文档.
1
20
21#pragma once
22
23#include "AstGlobal.h"
24#include "AstCore/GeodeticPoint.hpp"
25#include "AstMath/Vector.hpp"
26
27AST_NAMESPACE_BEGIN
28
35AST_CORE_CAPI void aGeodeticToNEDTransform(const GeodeticPoint& origin, Rotation& rot);
36
38AST_CORE_CAPI void aGeodeticToENUTransform(const GeodeticPoint& origin, Rotation& rot);
39
40
46AST_CORE_API void aGeodeticToBodyFixed(const GeodeticPoint& point, Vector3d& bodyFixed, double radius, double flatFact);
47
53AST_CORE_API void aBodyFixedToGeodetic(const Vector3d& bodyFixed, GeodeticPoint& point, double radius, double flatFact);
54
55
60AST_CORE_API void aGeodeticToBodyFixed(const GeodeticPoint& point, Vector3d& bodyFixed, double radius);
61
62
67AST_CORE_API void aBodyFixedToGeodetic(const Vector3d& bodyFixed, GeodeticPoint& point, double radius);
68
69
76AST_CORE_API void aGeodeticToBodyFixed(const GeodeticPoint& point, Vector3d& bodyFixed, double xRadius, double yRadius, double zRadius);
77
78
85AST_CORE_API void aBodyFixedToGeodetic(const Vector3d& bodyFixed, GeodeticPoint& point, double xRadius, double yRadius, double zRadius);
86
87
100AST_CORE_API errc_t aGeodeticToBodyFixed(const GeodeticPoint& point, const LatLonAlt& rate,
101 Vector3d& bodyFixed, Vector3d& vel,
102 double radius, double flatFact);
103
104
118AST_CORE_API errc_t aBodyFixedToGeodetic(const Vector3d& bodyFixed, const Vector3d& vel,
119 GeodeticPoint& point, LatLonAlt& rate,
120 double radius, double flatFact);
121
122
127AST_CORE_API void aGeodeticToNED(const Vector3d& posInBodyFixed, const GeodeticPoint& origin, Vector3d& ned, BodyShape* bodyShape);
128
133AST_CORE_API void aGeodeticToNED(const GeodeticPoint& point, const GeodeticPoint& origin, Vector3d& ned, BodyShape* bodyShape);
134
139AST_CORE_API void aNEDToGeodetic(const Vector3d& ned, const GeodeticPoint& origin, GeodeticPoint& point, BodyShape* bodyShape);
140
145AST_CORE_API void aGeodeticToENU(const Vector3d& posInBodyFixed, const GeodeticPoint& origin, Vector3d& enu, BodyShape* bodyShape);
146
151AST_CORE_API void aGeodeticToENU(const GeodeticPoint& point, const GeodeticPoint& origin, Vector3d& enu, BodyShape* bodyShape);
152
157AST_CORE_API void aENUToGeodetic(const Vector3d& enu, const GeodeticPoint& origin, GeodeticPoint& point, BodyShape* bodyShape);
158
159
160// ----------------------------------
161// MATLAB Navigation Toolbox 同名函数
162// ----------------------------------
163
164
165A_ALWAYS_INLINE Vector3d lla2ned(const GeodeticPoint& lla, const GeodeticPoint& lla0, BodyShape* bodyShape)
166{
167 Vector3d ned;
168 aGeodeticToNED(lla, lla0, ned, bodyShape);
169 return ned;
170}
171
172A_ALWAYS_INLINE GeodeticPoint ned2lla(const Vector3d& ned, const GeodeticPoint& lla0, BodyShape* bodyShape)
173{
174 GeodeticPoint target;
175 aNEDToGeodetic(ned, lla0, target, bodyShape);
176 return target;
177}
178
179A_ALWAYS_INLINE Vector3d lla2enu(const GeodeticPoint& lla, const GeodeticPoint& lla0, BodyShape* bodyShape)
180{
181 Vector3d enu;
182 aGeodeticToENU(lla, lla0, enu, bodyShape);
183 return enu;
184}
185
186A_ALWAYS_INLINE GeodeticPoint enu2lla(const Vector3d& enu, const GeodeticPoint& lla0, BodyShape* bodyShape)
187{
188 GeodeticPoint target;
189 aENUToGeodetic(enu, lla0, target, bodyShape);
190 return target;
191}
192
193
196AST_NAMESPACE_END
void aENUToGeodetic(const Vector3d &enu, const GeodeticPoint &origin, GeodeticPoint &point, BodyShape *bodyShape)
ENU坐标转大地坐标
定义 LocalHorizonalFrame.cpp:367
void aGeodeticToBodyFixed(const GeodeticPoint &lla, Vector3d &cart, double radius, double flatFact)
大地坐标转天体固连系坐标
定义 LocalHorizonalFrame.cpp:94
void aGeodeticToNED(const Vector3d &posInBodyFixed, const GeodeticPoint &origin, Vector3d &ned, BodyShape *bodyShape)
天体固连系坐标转NED坐标
定义 LocalHorizonalFrame.cpp:322
void aGeodeticToNEDTransform(const GeodeticPoint &origin, Rotation &rot)
大地坐标(天体固连系)转NED坐标系的旋转变换
定义 LocalHorizonalFrame.cpp:35
void aBodyFixedToGeodetic(const Vector3d &cart, GeodeticPoint &lla, double radius, double flatFact)
天体固连系坐标转大地坐标
定义 LocalHorizonalFrame.cpp:48
void aNEDToGeodetic(const Vector3d &ned, const GeodeticPoint &origin, GeodeticPoint &point, BodyShape *bodyShape)
NED坐标转大地坐标
定义 LocalHorizonalFrame.cpp:340
void aGeodeticToENUTransform(const GeodeticPoint &origin, Rotation &rot)
大地坐标(天体固连系)转ENU坐标系的旋转变换
定义 LocalHorizonalFrame.cpp:41
void aGeodeticToENU(const Vector3d &posInBodyFixed, const GeodeticPoint &origin, Vector3d &enu, BodyShape *bodyShape)
天体固连系坐标转ENU坐标
定义 LocalHorizonalFrame.cpp:349