🛰️航天仿真算法库 SpaceAST 0.0.1
载入中...
搜索中...
未找到
Literals.hpp
浏览该文件的文档.
1
22
23#pragma once
24#include "AstGlobal.h"
25#include "Constants.h"
26
27AST_NAMESPACE_BEGIN
28
31namespace literals
32{
33 // 角度单位 - 基于弧度的单位制. 所有角度转换最终表示为弧度
34
36 inline constexpr double operator ""_rad(long double val)
37 {
38 return val;
39 }
40
42 inline constexpr double operator ""_rad(unsigned long long val)
43 {
44 return static_cast<double>(val);
45 }
46
48 inline constexpr double operator ""_deg(long double val)
49 {
50 return val * kDegToRad;
51 }
52
54 inline constexpr double operator ""_deg(unsigned long long val)
55 {
56 return val * kDegToRad;
57 }
58
60 inline constexpr double operator ""_arcsec(long double val)
61 {
62 return val * kArcSecToRad;
63 }
64
66 inline constexpr double operator ""_arcsec(unsigned long long val)
67 {
68 return val * kArcSecToRad;
69 }
70
72 inline constexpr double operator ""_revs(long double val)
73 {
74 return val * kRevolutionToRad;
75 }
76
78 inline constexpr double operator ""_revs(unsigned long long val)
79 {
80 return val * kRevolutionToRad;
81 }
82
83 // 长度单位 - 基于米的单位制. 所有长度转换最终表示为米
84
86 inline constexpr double operator ""_km(long double val)
87 {
88 return val * kKilometerToMeter;
89 }
90
92 inline constexpr double operator ""_km(unsigned long long val)
93 {
94 return val * kKilometerToMeter;
95 }
96
98 inline constexpr double operator ""_m(long double val)
99 {
100 return val;
101 }
102
104 inline constexpr double operator ""_m(unsigned long long val)
105 {
106 return static_cast<double>(val);
107 }
108
110 inline constexpr double operator ""_cm(long double val)
111 {
112 return val * kCentimeterToMeter;
113 }
114
116 inline constexpr double operator ""_cm(unsigned long long val)
117 {
118 return val * kCentimeterToMeter;
119 }
120
122 inline constexpr double operator ""_mm(long double val)
123 {
124 return val * kMillimeterToMeter;
125 }
126
128 inline constexpr double operator ""_mm(unsigned long long val)
129 {
130 return val * kMillimeterToMeter;
131 }
132
134 inline constexpr double operator ""_um(long double val)
135 {
136 return val * kMicroMeterToMeter;
137 }
138
140 inline constexpr double operator ""_um(unsigned long long val)
141 {
142 return val * kMicroMeterToMeter;
143 }
144
146 inline constexpr double operator ""_nm(long double val)
147 {
148 return val * kNanometerToMeter;
149 }
150
152 inline constexpr double operator ""_nm(unsigned long long val)
153 {
154 return val * kNanometerToMeter;
155 }
156
158 inline constexpr double operator ""_au(long double val)
159 {
160 return val * kAU;
161 }
162
164 inline constexpr double operator ""_au(unsigned long long val)
165 {
166 return val * kAU;
167 }
168
169
170 // 时间单位 - 基于秒的单位制. 所有时间转换最终表示为秒
171
173 inline constexpr double operator ""_s(long double val)
174 {
175 return val;
176 }
177
179 inline constexpr double operator ""_s(unsigned long long val)
180 {
181 return static_cast<double>(val);
182 }
183
185 inline constexpr double operator ""_min(long double val)
186 {
187 return val * kMinToSec;
188 }
189
191 inline constexpr double operator ""_min(unsigned long long val)
192 {
193 return val * kMinToSec;
194 }
195
197 inline constexpr double operator ""_h(long double val)
198 {
199 return val * kHourToSec;
200 }
201
203 inline constexpr double operator ""_h(unsigned long long val)
204 {
205 return val * kHourToSec;
206 }
207
209 inline constexpr double operator ""_hour(long double val)
210 {
211 return val * kHourToSec;
212 }
213
215 inline constexpr double operator ""_hour(unsigned long long val)
216 {
217 return static_cast<double>(val) * kHourToSec;
218 }
219
221 inline constexpr double operator ""_day(long double val)
222 {
223 return val * kDayToSec;
224 }
225
227 inline constexpr double operator ""_day(unsigned long long val)
228 {
229 return val * kDayToSec;
230 }
231
233 inline constexpr double operator ""_ms(long double val)
234 {
235 return val * kMilliSecToSec;
236 }
237
239 inline constexpr double operator ""_ms(unsigned long long val)
240 {
241 return val * kMilliSecToSec;
242 }
243
245 inline constexpr double operator ""_us(long double val)
246 {
247 return val * kMicroSecToSec;
248 }
249
251 inline constexpr double operator ""_us(unsigned long long val)
252 {
253 return val * kMicroSecToSec;
254 }
255
257 inline constexpr double operator ""_ns(long double val)
258 {
259 return val * kNanoSecToSec;
260 }
261
263 inline constexpr double operator ""_ns(unsigned long long val)
264 {
265 return val * kNanoSecToSec;
266 }
267
269 inline constexpr double operator ""_ps(long double val)
270 {
271 return val * kPicoSecToSec;
272 }
273
275 inline constexpr double operator ""_ps(unsigned long long val)
276 {
277 return val * kPicoSecToSec;
278 }
279
280 // 质量单位 - 基于kg的单位制
281
283 inline constexpr double operator ""_kg(long double val)
284 {
285 return val;
286 }
287
289 inline constexpr double operator ""_kg(unsigned long long val)
290 {
291 return static_cast<double>(val);
292 }
293
295 inline constexpr double operator ""_g(long double val)
296 {
297 return val * 1e-3;
298 }
299
301 inline constexpr double operator ""_g(unsigned long long val)
302 {
303 return val * 1e-3;
304 }
305
306
307
308 // 速度单位 - 基于m/s的单位制
309
311 inline constexpr double operator ""_m_s(long double val)
312 {
313 return val;
314 }
315
317 inline constexpr double operator ""_m_s(unsigned long long val)
318 {
319 return static_cast<double>(val);
320 }
321
323 inline constexpr double operator ""_km_s(long double val)
324 {
325 return val * kKilometerToMeter;
326 }
327
329 inline constexpr double operator ""_km_s(unsigned long long val)
330 {
331 return val * kKilometerToMeter;
332 }
333
335 inline constexpr double operator ""_km_h(long double val)
336 {
337 return val * kKilometerToMeter / kHourToSec;
338 }
339
341 inline constexpr double operator ""_km_h(unsigned long long val)
342 {
343 return val * kKilometerToMeter / kHourToSec;
344 }
345
346 // 角速度单位 - 基于 rad/s的单位制
347
349 inline constexpr double operator ""_rad_s(long double val)
350 {
351 return val;
352 }
353
355 inline constexpr double operator ""_rad_s(unsigned long long val)
356 {
357 return static_cast<double>(val);
358 }
359
361 inline constexpr double operator ""_deg_s(long double val)
362 {
363 return val * kDegToRad;
364 }
365
367 inline constexpr double operator ""_deg_s(unsigned long long val)
368 {
369 return val * kDegToRad;
370 }
371
372 // 面积单位 - 基于m2的单位制
373
375 inline constexpr double operator ""_m2(long double val)
376 {
377 return val;
378 }
379
381 inline constexpr double operator ""_m2(unsigned long long val)
382 {
383 return static_cast<double>(val);
384 }
385
386
387 //----------------
388 // unit literals
389 //----------------
390
391 constexpr double deg = 1_deg;
392 constexpr double rad = 1_rad;
393 constexpr double arcsec = 1_arcsec;
394
395 constexpr double m = 1_m;
396 constexpr double km = 1_km;
397 constexpr double cm = 1_cm;
398 constexpr double au = 1_au;
399
400
401 constexpr double s = 1_s;
402 constexpr double sec = 1_s;
403 constexpr double ms = 1_ms;
404 constexpr double min = 1_min;
405 constexpr double h = 1_h;
406 constexpr double day = 1_day;
407}
408
409// 导入字面量命名空间到ast命名空间,便于使用
410using namespace literals;
411
412AST_NAMESPACE_END
413
Unit s
定义 Unit.cpp:435
Unit cm
厘米
定义 Unit.cpp:424
Unit h
小时
定义 Unit.cpp:439
Unit arcsec
弧秒
定义 Unit.cpp:451
Unit day
定义 Unit.cpp:440
Unit ms
毫秒
定义 Unit.cpp:436
Unit m
定义 Unit.cpp:426
Unit deg
定义 Unit.cpp:449
Unit sec
定义 Unit.cpp:434
Unit km
千米
定义 Unit.cpp:427
Unit rad
弧度
定义 Unit.cpp:450
constexpr double kCentimeterToMeter
厘米到米
定义 Constants.h:184
constexpr double kArcSecToRad
弧秒到弧度 kDegToRad/3600.0 度分秒的秒
定义 Constants.h:229
constexpr double kRevolutionToRad
周期数到弧度 2.0 * kPI
定义 Constants.h:234
constexpr double kKilometerToMeter
千米到米
定义 Constants.h:183
constexpr double kAU
天文单位 (IAU 1976)[m]
定义 Constants.h:64
constexpr double kMicroMeterToMeter
微米到米
定义 Constants.h:186
constexpr double kNanometerToMeter
纳米到米
定义 Constants.h:187
constexpr double kHourToSec
小时到秒
定义 Constants.h:199
constexpr double kDegToRad
角度到弧度 kPI/180.0
定义 Constants.h:228
constexpr double kMicroSecToSec
微秒到秒
定义 Constants.h:208
constexpr double kMilliSecToSec
毫秒到秒
定义 Constants.h:207
constexpr double kNanoSecToSec
纳秒到秒
定义 Constants.h:209
constexpr double kMillimeterToMeter
毫米到米
定义 Constants.h:185
constexpr double kDayToSec
天到秒
定义 Constants.h:203
constexpr double kPicoSecToSec
皮秒(微微秒)到秒
定义 Constants.h:210
constexpr double kMinToSec
分钟到秒
定义 Constants.h:195