🛰️航天仿真算法库 SpaceAST 0.0.1
载入中...
搜索中...
未找到
Literals.hpp
浏览该文件的文档.
1
22
23#pragma once
24
25#include "Constants.h"
26
27AST_NAMESPACE_BEGIN
28
32namespace literals
33{
34 // 角度单位 - 基于弧度的单位制. 所有角度转换最终表示为弧度
35
39 inline constexpr double operator ""_rad(long double val)
40 {
41 return val;
42 }
43
47 inline constexpr double operator ""_rad(unsigned long long val)
48 {
49 return static_cast<double>(val);
50 }
51
55 inline constexpr double operator ""_deg(long double val)
56 {
57 return val * kDegToRad;
58 }
59
63 inline constexpr double operator ""_deg(unsigned long long val)
64 {
65 return val * kDegToRad;
66 }
67
71 inline constexpr double operator ""_arcsec(long double val)
72 {
73 return val * kArcSecToRad;
74 }
75
79 inline constexpr double operator ""_arcsec(unsigned long long val)
80 {
81 return val * kArcSecToRad;
82 }
83
87 inline constexpr double operator ""_revs(long double val)
88 {
89 return val * kRevolutionToRad;
90 }
91
95 inline constexpr double operator ""_revs(unsigned long long val)
96 {
97 return val * kRevolutionToRad;
98 }
99
100 // 长度单位 - 基于米的单位制. 所有长度转换最终表示为米
101
105 inline constexpr double operator ""_km(long double val)
106 {
107 return val * kKilometerToMeter;
108 }
109
113 inline constexpr double operator ""_km(unsigned long long val)
114 {
115 return val * kKilometerToMeter;
116 }
117
121 inline constexpr double operator ""_m(long double val)
122 {
123 return val;
124 }
125
129 inline constexpr double operator ""_m(unsigned long long val)
130 {
131 return static_cast<double>(val);
132 }
133
137 inline constexpr double operator ""_cm(long double val)
138 {
139 return val * kCentimeterToMeter;
140 }
141
145 inline constexpr double operator ""_cm(unsigned long long val)
146 {
147 return val * kCentimeterToMeter;
148 }
149
153 inline constexpr double operator ""_mm(long double val)
154 {
155 return val * kMillimeterToMeter;
156 }
157
161 inline constexpr double operator ""_mm(unsigned long long val)
162 {
163 return val * kMillimeterToMeter;
164 }
165
169 inline constexpr double operator ""_um(long double val)
170 {
171 return val * kMicroMeterToMeter;
172 }
173
177 inline constexpr double operator ""_um(unsigned long long val)
178 {
179 return val * kMicroMeterToMeter;
180 }
181
185 inline constexpr double operator ""_nm(long double val)
186 {
187 return val * kNanometerToMeter;
188 }
189
193 inline constexpr double operator ""_nm(unsigned long long val)
194 {
195 return val * kNanometerToMeter;
196 }
197
201 inline constexpr double operator ""_au(long double val)
202 {
203 return val * kAU;
204 }
205
209 inline constexpr double operator ""_au(unsigned long long val)
210 {
211 return val * kAU;
212 }
213
214
215 // 时间单位 - 基于秒的单位制. 所有时间转换最终表示为秒
216
220 inline constexpr double operator ""_s(long double val)
221 {
222 return val;
223 }
224
228 inline constexpr double operator ""_s(unsigned long long val)
229 {
230 return static_cast<double>(val);
231 }
232
236 inline constexpr double operator ""_min(long double val)
237 {
238 return val * kMinToSec;
239 }
240
244 inline constexpr double operator ""_min(unsigned long long val)
245 {
246 return val * kMinToSec;
247 }
248
252 inline constexpr double operator ""_h(long double val)
253 {
254 return val * kHourToSec;
255 }
256
260 inline constexpr double operator ""_h(unsigned long long val)
261 {
262 return val * kHourToSec;
263 }
264
268 inline constexpr double operator ""_day(long double val)
269 {
270 return val * kDayToSec;
271 }
272
276 inline constexpr double operator ""_day(unsigned long long val)
277 {
278 return val * kDayToSec;
279 }
280
284 inline constexpr double operator ""_ms(long double val)
285 {
286 return val * kMilliSecToSec;
287 }
288
292 inline constexpr double operator ""_ms(unsigned long long val)
293 {
294 return val * kMilliSecToSec;
295 }
296
300 inline constexpr double operator ""_us(long double val)
301 {
302 return val * kMicroSecToSec;
303 }
304
308 inline constexpr double operator ""_us(unsigned long long val)
309 {
310 return val * kMicroSecToSec;
311 }
312
316 inline constexpr double operator ""_ns(long double val)
317 {
318 return val * kNanoSecToSec;
319 }
320
324 inline constexpr double operator ""_ns(unsigned long long val)
325 {
326 return val * kNanoSecToSec;
327 }
328
332 inline constexpr double operator ""_ps(long double val)
333 {
334 return val * kPicoSecToSec;
335 }
336
340 inline constexpr double operator ""_ps(unsigned long long val)
341 {
342 return val * kPicoSecToSec;
343 }
344
345
346 // 速度单位 - 基于m/s的单位制
347
351 inline constexpr double operator ""_m_s(long double val)
352 {
353 return val;
354 }
355
359 inline constexpr double operator ""_m_s(unsigned long long val)
360 {
361 return static_cast<double>(val);
362 }
363
367 inline constexpr double operator ""_km_s(long double val)
368 {
369 return val * kKilometerToMeter;
370 }
371
375 inline constexpr double operator ""_km_s(unsigned long long val)
376 {
377 return val * kKilometerToMeter;
378 }
379
383 inline constexpr double operator ""_km_h(long double val)
384 {
385 return val * kKilometerToMeter / kHourToSec;
386 }
387
391 inline constexpr double operator ""_km_h(unsigned long long val)
392 {
393 return val * kKilometerToMeter / kHourToSec;
394 }
395
396 // 角速度单位 - 基于 rad/s的单位制
397
401 inline constexpr double operator ""_rad_s(long double val)
402 {
403 return val;
404 }
405
409 inline constexpr double operator ""_rad_s(unsigned long long val)
410 {
411 return static_cast<double>(val);
412 }
413
417 inline constexpr double operator ""_deg_s(long double val)
418 {
419 return val * kDegToRad;
420 }
421
425 inline constexpr double operator ""_deg_s(unsigned long long val)
426 {
427 return val * kDegToRad;
428 }
429
430 //----------------
431 // unit literals
432 //----------------
433
434 constexpr double deg = 1_deg;
435 constexpr double rad = 1_rad;
436 constexpr double arcsec = 1_arcsec;
437
438 constexpr double m = 1_m;
439 constexpr double km = 1_km;
440 constexpr double cm = 1_cm;
441 constexpr double au = 1_au;
442
443
444 constexpr double s = 1_s;
445 constexpr double sec = 1_s;
446 constexpr double ms = 1_ms;
447 constexpr double min = 1_min;
448 constexpr double h = 1_h;
449 constexpr double day = 1_day;
450}
451
452// 导入字面量命名空间到ast命名空间,便于使用
453using namespace literals;
454
455AST_NAMESPACE_END
456
Unit s
定义 Unit.cpp:425
Unit cm
厘米
定义 Unit.cpp:414
Unit h
小时
定义 Unit.cpp:429
Unit arcsec
弧秒
定义 Unit.cpp:441
Unit day
定义 Unit.cpp:430
Unit ms
毫秒
定义 Unit.cpp:426
Unit m
定义 Unit.cpp:416
Unit deg
定义 Unit.cpp:439
Unit sec
定义 Unit.cpp:424
Unit km
千米
定义 Unit.cpp:417
Unit rad
弧度
定义 Unit.cpp:440
constexpr double kCentimeterToMeter
厘米到米
定义 Constants.h:167
constexpr double kArcSecToRad
弧秒到弧度 kDegToRad/3600.0 度分秒的秒
定义 Constants.h:213
constexpr double kRevolutionToRad
周期数到弧度 2.0 * kPI
定义 Constants.h:217
constexpr double kKilometerToMeter
千米到米
定义 Constants.h:166
constexpr double kAU
天文单位 (IAU 1976)[m]
定义 Constants.h:64
constexpr double kMicroMeterToMeter
微米到米
定义 Constants.h:169
constexpr double kNanometerToMeter
纳米到米
定义 Constants.h:170
constexpr double kHourToSec
小时到秒
定义 Constants.h:182
constexpr double kDegToRad
角度到弧度 kPI/180.0
定义 Constants.h:212
constexpr double kMicroSecToSec
微秒到秒
定义 Constants.h:191
constexpr double kMilliSecToSec
毫秒到秒
定义 Constants.h:190
constexpr double kNanoSecToSec
纳秒到秒
定义 Constants.h:192
constexpr double kMillimeterToMeter
毫米到米
定义 Constants.h:168
constexpr double kDayToSec
天到秒
定义 Constants.h:186
constexpr double kPicoSecToSec
皮秒(微微秒)到秒
定义 Constants.h:193
constexpr double kMinToSec
分钟到秒
定义 Constants.h:178