yincheng.zhong
2025-11-23 212ccb49d3e7c7fa138c5f9d335d0b8c5a08d2a3
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
/*******************************************************************************
 * 文件名称 : geo_utils.h
 * 文件说明 : LLA/ECEF/ENU 坐标转换工具
 * 创建日期 : 2025-11-22
 *******************************************************************************/
 
#ifndef FML_GEO_UTILS_H_
#define FML_GEO_UTILS_H_
 
#include "HIDO_TypeDef.h"
#include "GPS.h"
 
/* ENU 原点缓存结构 */
typedef struct
{
    double lat_deg;          /* 原点纬度 (deg) */
    double lon_deg;          /* 原点经度 (deg) */
    double alt_m;            /* 原点高程 (m) */
    double lat_rad;          /* 纬度 (rad) */
    double lon_rad;          /* 经度 (rad) */
    double sin_lat;          /* sin(lat) 预计算 */
    double cos_lat;          /* cos(lat) 预计算 */
    double sin_lon;          /* sin(lon) 预计算 */
    double cos_lon;          /* cos(lon) 预计算 */
    double ecef[3];          /* 原点 ECEF 坐标 (m) */
    HIDO_BOOL initialized;   /* 是否已经初始化 */
} ST_GeoOrigin;
 
/* 使用 GGA 原点(deg/m)初始化 ENU 缓存 */
HIDO_VOID Geo_OriginInit(ST_GeoOrigin *_pstOrigin, double _latDeg, double _lonDeg, double _altM);
/* 将 GPRMI 经纬高转换为 ENU 坐标 */
HIDO_VOID Geo_GprmiToENU(const ST_GPRMI *_pstGprmi, const ST_GeoOrigin *_pstOrigin, float _enu[3]);
 
#endif /* FML_GEO_UTILS_H_ */