🛰️航天仿真算法库 SpaceAST 0.3.1
载入中...
搜索中...
未找到
Constants.hpp
浏览该文件的文档.
1
20
21#pragma once
22
23#include "AstGlobal.h"
24#include <limits>
25
26AST_NAMESPACE_BEGIN
27
28
34// 时间系统常量
35
36constexpr double kJ1900Epoch = 2415020.0;
37constexpr double kJ1950Epoch = 2433282.5;
38constexpr double kJ2000Epoch = 2451545.0;
39constexpr double kJ2100Epoch = 2488070.0;
40
41constexpr double kB1900Epoch = 2415020.31352;
42// 原本定义为 2433282.4234591, 后改为SPICE中的定义 2433282.42345905
43constexpr double kB1950Epoch = 2433282.42345905;
44
45
46constexpr double kTTMinusTAI = 32.184;
47constexpr double kGPSMinusTAI = 19.0;
48constexpr double kTTMinusTAIInDay = 32.184/86400;
49constexpr double kMJDRefEpoch = 2400000.5;
50
51
52// pi相关常量
53
54constexpr double kPI = 3.141592653589793238462643383279502884197169399375105;
55constexpr double kTwoPI = 6.283185307179586476925286766558 ;
56constexpr double kFourPI = 12.566370614359172953850573533116 ;
57constexpr double kHalfPI = 1.5707963267948966192313216916395 ;
58constexpr double kThirdPI = 1.047197551196597746154214461093 ;
59constexpr double kQuarterPI = 0.78539816339744830961566084581975 ;
60constexpr double kSqrPI = 9.869604401089358618834490999873 ;
61
62
63// 其他数学运算常量
64constexpr double kNaN = std::numeric_limits<double>::quiet_NaN();
65constexpr double kInf = +std::numeric_limits<double>::infinity();
66constexpr double kNegInf = -std::numeric_limits<double>::infinity();
67
68
69
70// 天文常量
71
72constexpr double kAU = 1.49597870691e11;
73constexpr double kLightSpeed = 2.99792458e8;
74constexpr double kGrav = 6.673e-11;
75
76
77// 地球相关常量
78
79constexpr double kEarthGrav = 3.986004418e14;
80constexpr double kEarthGrav_EGM2008 = 3.986004415e14;
81constexpr double kEarthRadius = 6378137.0;
82constexpr double kEarthMinRadius = 6356752.31424;
83constexpr double kEarthFlatFact = 3.35281066475E-3;
84constexpr double kEarthSiderealDay = 86164.09054;
85constexpr double kEarthSiderealYear = 365.25636;
86
87// constexpr double kEarthAngVel = 7.2921151467e-5; ///< 地球标称平均角速度 (WGS84) [rad/s](kTwoPI/86164.0919)
88constexpr double kEarthAngVel = 7.292115146706979e-5;
89
90// @fixme 这里应该使用恒星日吧
91// constexpr double kEarthMeanMotion = 1.9910643985790994404796035026544e-7; ///< 地球公转平均角速度 (2pi/365.2420897/86400) rad/sec
92// constexpr double kEarthMeanMotion = kTwoPI / (kEarthSiderealYear * 86400);
93
94
95// WGS84相关常量
96constexpr double kEarthRadius_WGS84 = 6378137.0;
97constexpr double kEarthMinRadius_WGS84 = 6356752.31424;
98constexpr double kEarthFlatFact_WGS84 = 3.35281066475E-3; // (1/298.257223563)
99
100
101// CGCS2000相关常量
102constexpr double kEarthRadius_CGCS2000 = 6378137.0;
103constexpr double kEarthMinRadius_CGCS2000 = 6356752.31414;
104constexpr double kEarthFlatFact_CGCS2000 = 1/298.257222101;
105
106// 潮汐相关常量
107// 参考: IERS Conventions (2010), Technical Note 36 (TN36)
108constexpr double kEarthK20LoveNumber = 0.30190;
109
110
111// 月球相关常量
112
113constexpr double kMoonGrav = 4.9028029535968e+12;
114constexpr double kMoonRadius = 1737400.0;
115constexpr double kMoonMinRadius = 1737400.0;
116constexpr double kMoonAngVel = 2.661699e-6;
117constexpr double kMoonOrbitSemiMajorAxis = 384399.0e3;
118
119
120// 木星相关常量
121
122constexpr double kJupiterGrav = 1.26712000000000e+017;
123constexpr double kJupiterRadius = 7.14920000000000e+007;
124constexpr double kJupiterMinRadius = 6.68540000000000e+007;
125
126// 火星相关常量
127
128constexpr double kMarsGrav = 4.28283719012840e+013;
129constexpr double kMarsRadius = 3.39700000000000e+006;
130constexpr double kMarsMinRadius = 3.37500000000000e+006;
131
132
133// 水星相关常量
134
135constexpr double kMercuryGrav = 2.20320800000000e+013;
136constexpr double kMercuryRadius = 2.43970000000000e+006;
137constexpr double kMercuryMinRadius = 2.43970000000000e+006;
138
139
140// 海王星相关常量
141
142constexpr double kNeptuneGrav = 6.87130000000000e+015;
143constexpr double kNeptuneRadius = 2.52690000000000e+007;
144constexpr double kNeptuneMinRadius = 2.48000000000000e+007;
145
146
147// 冥王星相关常量
148
149constexpr double kPlutoGrav = 1.00907600000000e+012;
150constexpr double kPlutoRadius = 1.16200000000000e+006;
151constexpr double kPlutoMinRadius = 1.16200000000000e+006;
152
153
154// 土星相关常量
155
156constexpr double kSaturnGrav = 3.79340000000000e+016;
157constexpr double kSaturnRadius = 6.02680000000000e+007;
158constexpr double kSaturnMinRadius = 5.43640000000000e+007;
159
160
161// 太阳相关常量
162
163constexpr double kSunGrav = 1.327122E20;
164constexpr double kSunRadius = 695990000.0;
165constexpr double kSunMinRadius = 695990000.0;
166constexpr double kSunLuminosity = 3.839E26;
167constexpr double kSolarConstant = 1367.0;
168
169
170// 天王星相关常量
171
172constexpr double kUranusGrav = 5.80320000000000e+015;
173constexpr double kUranusRadius = 2.55590000000000e+007;
174constexpr double kUranusMinRadius = 2.49730000000000e+007;
175
176
177// 金星相关常量
178
179constexpr double kVenusGrav = 3.24858800000000e+014;
180constexpr double kVenusRadius = 6.05190000000000e+006;
181constexpr double kVenusMinRadius = 6.05190000000000e+006;
182
183
184
185// 长度单位转换常数
186
187constexpr double kMeterToKilometer = 1.0e-03;
188constexpr double kMeterToCentimeter = 1.0e+02;
189constexpr double kMeterToMillimeter = 1.0e+03;
190constexpr double kMeterToMicroMeter = 1.0e+06;
191constexpr double kMeterToNanometer = 1.0e+09;
192
193constexpr double kKilometerToMeter = 1.0e03;
194constexpr double kCentimeterToMeter = 1.e-02;
195constexpr double kDecimeterToMeter = 1.e-01;
196constexpr double kMillimeterToMeter = 1.e-03;
197constexpr double kMicroMeterToMeter = 1.e-06;
198constexpr double kNanometerToMeter = 1.e-09;
199
200constexpr double kInchToMeter = 0.0254;
201constexpr double kFootToMeter = 0.3048;
202constexpr double kYardToMeter = 0.9144;
203constexpr double kMileToMeter = 1609.344;
204
205// 时间单位转换常数
206
207constexpr double kSecToMin = 0.0166666666666666667;
208constexpr double kSecToHour = 0.000277777777777777778;
209constexpr double kSecToDay = 0.0000115740740740740741;
210
211constexpr double kMinToSec = 60.0;
212constexpr double kMinToHour = 0.0166666666666666667;
213constexpr double kMinToDay = 0.000694444444444444444;
214
215constexpr double kHourToSec = 3600.0;
216constexpr double kHourToMin = 60.0;
217constexpr double kHourToDay = 0.0416666666666666667;
218
219constexpr double kDayToSec = 8.64e04;
220constexpr double kDayToMin = 1440.0;
221constexpr double kDayToHour = 24.0;
222
223constexpr double kMilliSecToSec = 1.0e-03;
224constexpr double kMicroSecToSec = 1.0e-06;
225constexpr double kNanoSecToSec = 1.0e-09;
226constexpr double kPicoSecToSec = 1.0e-12;
227
228constexpr double kSecToMilliSec = 1.0e+03;
229constexpr double kSecToMicroSec = 1.0e+06;
230constexpr double kSecToNanoSec = 1.0e+09;
231constexpr double kSecToPicoSec = 1.0e+12;
232
233// 天数、秒数相关常量
234
235constexpr double kDaysPerJulianCentury = 36525.0;
236constexpr double kDaysPerJulianYear = 365.25;
237constexpr double kSecondsPerDay = 86400.0;
238constexpr double kSecondsPerHour = 3600.0;
239constexpr double kSecondsPerMinute = 60.0;
240constexpr double kSecondsPerJulianYear = 31557600.0;
241
242// 质量单位转换常数
243
244constexpr double kGramToKilogram = 1.0e-03;
245constexpr double kMilligramToKilogram = 1.0e-06;
246constexpr double kPoundToKilogram = 0.45359237;
247
248// 体积单位转换常数
249
250constexpr double kLiterToCubicMeter = 1.0e-03;
251
252// 无量纲单位转换常数
253
254constexpr double kPercentToUnit = 1.0e-02;
255
256// 角度单位转换常数
257
258constexpr double kDegToRad = 0.017453292519943295769236907684886;
259constexpr double kArcSecToRad = 4.848136811095359935899141e-6;
260constexpr double kArcMinToRad = 2.9088820866572159615394846141477e-4;
261constexpr double kTimeSecToRad = 7.2722052166430399038487115353692e-5;
262constexpr double kTimeMinToRad = 0.0043633231299858239423092269212215;
263constexpr double kTimeHourToRad = kDegToRad * 15.0;
264constexpr double kRevolutionToRad = kTwoPI;
265
266constexpr double kRadToDeg = 57.2957795130823208767;
267constexpr double kRadToTimeHour = kRadToDeg / 15.0;
268
269// 磁感应强度(磁通密度)单位转换常数
270
271constexpr double kNanoteslaToTesla = 1.0e-9;
272constexpr double kGaussToTesla = 1.0e-4;
273
274
275// 温度单位转换常数
276// 仿射式换算: SI = value * scale + offset(乘子用 kXToY,偏移量用 kXToYOffset)
277constexpr double kCelsiusToKelvinOffset = 273.15;
278constexpr double kFahrenheitToKelvinScale = 5.0 / 9.0;
279constexpr double kFahrenheitToKelvinOffset = 459.67 * 5.0 / 9.0;
281
282// 分贝(dB)/贝尔(B)相关常数
283// 对数式换算: SI = reference * 10^(value / factor)
284constexpr double kDecibelPowerFactor = 10.0;
285constexpr double kBelFactor = 1.0;
286constexpr double kMilliwattToWatt = 1e-3;
287
291A_ALWAYS_INLINE constexpr double aLightSpeed() noexcept
292{
293 return kLightSpeed;
294}
295
296
300AST_NAMESPACE_END
constexpr double kMoonRadius
月球赤道半径 [m]. (IAU2000);
定义 Constants.hpp:114
constexpr double kEarthMinRadius
地球最小(南北极)半径 (WGS84)[m]
定义 Constants.hpp:82
constexpr double kSecToPicoSec
秒到皮秒
定义 Constants.hpp:231
constexpr double kSecondsPerMinute
一分钟的秒数
定义 Constants.hpp:239
constexpr double kCentimeterToMeter
厘米到米
定义 Constants.hpp:194
constexpr double kJ1900Epoch
J1900历元
定义 Constants.hpp:36
constexpr double kGrav
万有引力常数 [m^3/kg*s^2]
定义 Constants.hpp:74
constexpr double kMJDRefEpoch
简约儒略日的参考历元
定义 Constants.hpp:49
constexpr double kInchToMeter
英寸到米
定义 Constants.hpp:200
constexpr double kSunMinRadius
太阳最小半径
定义 Constants.hpp:165
constexpr double kArcSecToRad
弧秒到弧度 kDegToRad/3600.0 度分秒的秒
定义 Constants.hpp:259
constexpr double kRevolutionToRad
周期数到弧度 2.0 * kPI
定义 Constants.hpp:264
constexpr double kJupiterGrav
木星引力常数
定义 Constants.hpp:122
constexpr double kGaussToTesla
高斯到特斯拉
定义 Constants.hpp:272
constexpr double kSecondsPerHour
一小时的秒数
定义 Constants.hpp:238
constexpr double kMarsGrav
火星引力常数(GMM2B)
定义 Constants.hpp:128
constexpr double kQuarterPI
PI/4
定义 Constants.hpp:59
constexpr double kSunGrav
太阳引力常数 [m^3/s^2]
定义 Constants.hpp:163
constexpr double kTimeMinToRad
时间分到弧度,时分秒的分
定义 Constants.hpp:262
constexpr double kTwoPI
2*PI
定义 Constants.hpp:55
constexpr double kMinToDay
分钟到天
定义 Constants.hpp:213
constexpr double kMercuryMinRadius
水星最小半径
定义 Constants.hpp:137
constexpr double kNeptuneGrav
海王星引力常数
定义 Constants.hpp:142
constexpr double kMercuryGrav
水星引力常数
定义 Constants.hpp:135
constexpr double kDaysPerJulianYear
儒略年天数
定义 Constants.hpp:236
constexpr double kKilometerToMeter
千米到米
定义 Constants.hpp:193
constexpr double kAU
天文单位 (IAU 1976)[m]
定义 Constants.hpp:72
constexpr double kMicroMeterToMeter
微米到米
定义 Constants.hpp:197
constexpr double kSunLuminosity
太阳光度 [W] (Carrol & Ostlie, 2007) An Introduction to Modern Astrophysics
定义 Constants.hpp:166
constexpr double kNegInf
Negative Infinity 常量
定义 Constants.hpp:66
constexpr double kMeterToNanometer
米到纳米
定义 Constants.hpp:191
constexpr double kMoonOrbitSemiMajorAxis
月球的轨道半长轴 [m]
定义 Constants.hpp:117
constexpr double kYardToMeter
码到米
定义 Constants.hpp:202
constexpr double kEarthK20LoveNumber
地球2阶位Love数 k20 — IERS 2010 TN36 第6章 第6.2.1节 表6.3 (p.83, 滞弹性地球名义值)
定义 Constants.hpp:108
constexpr double kDayToHour
天到小时
定义 Constants.hpp:221
constexpr double kNanometerToMeter
纳米到米
定义 Constants.hpp:198
constexpr double kJ1950Epoch
J1950历元
定义 Constants.hpp:37
constexpr double kSecToDay
秒到天
定义 Constants.hpp:209
constexpr double kHourToDay
小时到天
定义 Constants.hpp:217
constexpr double kSaturnGrav
土星引力常数
定义 Constants.hpp:156
constexpr double kMoonGrav
月球引力常数 [m^3/s^2]. (GLGM2)
定义 Constants.hpp:113
constexpr double kPlutoGrav
冥王星引力常数
定义 Constants.hpp:149
constexpr double kFahrenheitToKelvinScale
华氏度到开尔文缩放(乘子)
定义 Constants.hpp:278
constexpr double kHourToSec
小时到秒
定义 Constants.hpp:215
constexpr double kSecToMilliSec
秒到毫秒
定义 Constants.hpp:228
constexpr double kEarthSiderealDay
地球平恒星日 [s]
定义 Constants.hpp:84
constexpr double kTimeHourToRad
时间时到弧度,时分秒的时
定义 Constants.hpp:263
constexpr double kDegToRad
角度到弧度 kPI/180.0
定义 Constants.hpp:258
constexpr double kUranusGrav
天王星引力常数
定义 Constants.hpp:172
constexpr double kMarsRadius
火星赤道半径
定义 Constants.hpp:129
constexpr double kMarsMinRadius
火星最小半径
定义 Constants.hpp:130
constexpr double kInf
Infinity 常量
定义 Constants.hpp:65
constexpr double kGPSMinusTAI
GPS 时间相对原子时的偏置[s]
定义 Constants.hpp:47
constexpr double kThirdPI
PI/3
定义 Constants.hpp:58
constexpr double kSolarConstant
太阳常数(1AU处总太阳辐照度)[W/m²]
定义 Constants.hpp:167
constexpr double kSecondsPerDay
一天的秒数
定义 Constants.hpp:237
constexpr double kEarthFlatFact
地球扁率 (WGS84), f=1-b/a
定义 Constants.hpp:83
constexpr double kMileToMeter
英里到米
定义 Constants.hpp:203
constexpr double kVenusMinRadius
金星最小半径
定义 Constants.hpp:181
constexpr double kPercentToUnit
百分比到单位
定义 Constants.hpp:254
constexpr double kMinToHour
分钟到小时
定义 Constants.hpp:212
constexpr double kMoonAngVel
月球自转角速度 [rad/s]
定义 Constants.hpp:116
constexpr double kRankineToKelvin
兰氏度到开尔文缩放(乘子)
定义 Constants.hpp:280
constexpr double kMeterToCentimeter
米到厘米
定义 Constants.hpp:188
constexpr double kNeptuneRadius
海王星赤道半径
定义 Constants.hpp:143
constexpr double kJupiterMinRadius
木星最小半径
定义 Constants.hpp:124
constexpr double kEarthAngVel
地球标称平均角速度 rad/s
定义 Constants.hpp:88
constexpr double kMeterToMicroMeter
米到微米
定义 Constants.hpp:190
constexpr double kSecToHour
秒到小时
定义 Constants.hpp:208
constexpr double kSecondsPerJulianYear
儒略年秒数(kDaysPerJulianYear * kSecondsPerDay)
定义 Constants.hpp:240
constexpr double kDecibelPowerFactor
功率型分贝系数(10·log10)
定义 Constants.hpp:284
constexpr double kSaturnRadius
土星赤道半径
定义 Constants.hpp:157
constexpr double kJupiterRadius
木星赤道半径
定义 Constants.hpp:123
constexpr double kMilligramToKilogram
毫克到千克
定义 Constants.hpp:245
constexpr double kPlutoMinRadius
冥王星最小半径
定义 Constants.hpp:151
constexpr double kLiterToCubicMeter
升到立方米
定义 Constants.hpp:250
constexpr double kMicroSecToSec
微秒到秒
定义 Constants.hpp:224
constexpr double kMilliSecToSec
毫秒到秒
定义 Constants.hpp:223
constexpr double kEarthGrav_EGM2008
地球引力常数 (EGM2008) [m^3/s^2]
定义 Constants.hpp:80
constexpr double kArcMinToRad
弧分到弧度 kDegToRad/60.0 度分秒的分
定义 Constants.hpp:260
constexpr double kEarthRadius
地球赤道半径 (WGS84)[m]
定义 Constants.hpp:81
constexpr double kHourToMin
小时到分钟
定义 Constants.hpp:216
constexpr double kEarthSiderealYear
地球平恒星年 [day]
定义 Constants.hpp:85
constexpr double kMilliwattToWatt
毫瓦到瓦(dBm参考值)
定义 Constants.hpp:286
constexpr double kFourPI
4*PI
定义 Constants.hpp:56
constexpr double kHalfPI
0.5*kAsPI
定义 Constants.hpp:57
constexpr double kUranusRadius
天王星半径
定义 Constants.hpp:173
constexpr double kNanoSecToSec
纳秒到秒
定义 Constants.hpp:225
constexpr double kJ2000Epoch
J2000历元
定义 Constants.hpp:38
constexpr double kSecToMin
秒到分钟
定义 Constants.hpp:207
constexpr double kTTMinusTAIInDay
地球时相对原子时的偏置[day]
定义 Constants.hpp:48
constexpr double kUranusMinRadius
天王星最小半径
定义 Constants.hpp:174
constexpr double kDecimeterToMeter
分米到米
定义 Constants.hpp:195
constexpr double kMoonMinRadius
月球最小半径(m)
定义 Constants.hpp:115
constexpr double kDaysPerJulianCentury
儒略世纪天数
定义 Constants.hpp:235
constexpr double kMercuryRadius
水星赤道半径
定义 Constants.hpp:136
constexpr double kB1900Epoch
B1900历元
定义 Constants.hpp:41
constexpr double kGramToKilogram
克到千克
定义 Constants.hpp:244
constexpr double kPlutoRadius
冥王星赤道半径
定义 Constants.hpp:150
constexpr double kNanoteslaToTesla
纳特斯拉到特斯拉
定义 Constants.hpp:271
constexpr double kSecToMicroSec
秒到微秒
定义 Constants.hpp:229
constexpr double kJ2100Epoch
J2100历元
定义 Constants.hpp:39
constexpr double kRadToTimeHour
弧度到时间时,时分秒的时
定义 Constants.hpp:267
constexpr double kVenusRadius
金星半径
定义 Constants.hpp:180
constexpr double kMeterToMillimeter
米到毫米
定义 Constants.hpp:189
constexpr double kPI
PI
定义 Constants.hpp:54
constexpr double kTimeSecToRad
时间秒到弧度,时分秒的秒
定义 Constants.hpp:261
constexpr double kSqrPI
PI*PI, PI squared
定义 Constants.hpp:60
constexpr double kRadToDeg
弧度到角度 180.0/kPI
定义 Constants.hpp:266
constexpr double kMillimeterToMeter
毫米到米
定义 Constants.hpp:196
constexpr double kDayToSec
天到秒
定义 Constants.hpp:219
constexpr double kFahrenheitToKelvinOffset
华氏度到开尔文偏移[K]
定义 Constants.hpp:279
constexpr double kSunRadius
太阳半径 [m]
定义 Constants.hpp:164
constexpr double kSecToNanoSec
秒到纳秒
定义 Constants.hpp:230
constexpr double kCelsiusToKelvinOffset
摄氏度到开尔文偏移K
定义 Constants.hpp:277
constexpr double kTTMinusTAI
地球时相对原子时的偏置[s]
定义 Constants.hpp:46
constexpr double kNeptuneMinRadius
海王星最小半径
定义 Constants.hpp:144
constexpr double kMeterToKilometer
米到千米
定义 Constants.hpp:187
constexpr double kFootToMeter
英尺到米
定义 Constants.hpp:201
constexpr double kLightSpeed
光速 (IAU 1976 value) [m/s]
定义 Constants.hpp:73
constexpr double kVenusGrav
金星引力常数
定义 Constants.hpp:179
constexpr double kNaN
NaN 常量
定义 Constants.hpp:64
constexpr double kPicoSecToSec
皮秒(微微秒)到秒
定义 Constants.hpp:226
constexpr double kDayToMin
天到分钟
定义 Constants.hpp:220
constexpr double kEarthGrav
地球引力常数 (WGS84) [m^3/s^2]
定义 Constants.hpp:79
constexpr double kMinToSec
分钟到秒
定义 Constants.hpp:211
constexpr double kPoundToKilogram
磅到千克
定义 Constants.hpp:246
constexpr double kB1950Epoch
B1950历元
定义 Constants.hpp:43
constexpr double kSaturnMinRadius
土星最小半径
定义 Constants.hpp:158
constexpr double kBelFactor
贝尔对数系数(1B = 10dB,即 log10 直接表示)
定义 Constants.hpp:285
A_ALWAYS_INLINE constexpr double aLightSpeed() noexcept
获取真空中的光速
定义 Constants.hpp:291