blob: e1a74c4545451b3609138d5bb13826cd2a462bf7 (
plain)
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
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
|
/*
* unit.hpp
*
* Created on: Feb 13, 2024
* Author: svenson
*/
#ifndef INCLUDE_PIXEL_UNIT_HPP_
#define INCLUDE_PIXEL_UNIT_HPP_
#include <numbers>
namespace pixel {
/** Time in fractions of seconds. */
typedef float si_time_t;
/** Length in fractions of meter. */
typedef float si_length_t;
/** Mass in fractions of kilograms. */
typedef float si_mass_t;
/** Velocity in fractions of meter/seconds. */
typedef float si_velo_t;
/** Acceleration in fractions of meter/seconds^2. */
typedef float si_accel_t;
/** Angle in fraction of radians. */
typedef float si_angle_t;
namespace literals {
constexpr si_time_t operator ""_year(unsigned long long int __v) { return (si_time_t)__v*365.25f*24.0f*3600.0f; }
constexpr si_time_t operator ""_month(unsigned long long int __v) { return (si_time_t)__v*30.0f*24.0f*3600.0f; }
constexpr si_time_t operator ""_week(unsigned long long int __v) { return (si_time_t)__v*7.0f*24.0f*3600.0f; }
constexpr si_time_t operator ""_day(unsigned long long int __v) { return (si_time_t)__v*24.0f*3600.0f; }
constexpr si_time_t operator ""_h(unsigned long long int __v) { return (si_time_t)__v*3600.0f; }
constexpr si_time_t operator ""_min(unsigned long long int __v) { return (si_time_t)__v*60.0f; }
constexpr si_time_t operator ""_s(unsigned long long int __v) { return (si_time_t)__v; }
constexpr si_time_t operator ""_ms(unsigned long long int __v) { return (si_time_t)__v/1000.0f; }
constexpr si_length_t operator ""_km(unsigned long long int __v) { return (si_length_t)__v*1000.0f; }
constexpr si_length_t operator ""_m(unsigned long long int __v) { return (si_length_t)__v; }
constexpr si_length_t operator ""_dm(unsigned long long int __v) { return (si_length_t)__v/10.0f; }
constexpr si_length_t operator ""_cm(unsigned long long int __v) { return (si_length_t)__v/100.0f; }
constexpr si_length_t operator ""_mm(unsigned long long int __v) { return (si_length_t)__v/1000.0f; }
constexpr si_mass_t operator ""_t(unsigned long long int __v) { return (si_mass_t)__v * 1000.0f; }
constexpr si_mass_t operator ""_kg(unsigned long long int __v) { return (si_mass_t)__v; }
constexpr si_mass_t operator ""_g(unsigned long long int __v) { return (si_mass_t)__v/1000.0f; }
constexpr si_mass_t operator ""_mg(unsigned long long int __v) { return (si_mass_t)__v/1000000.0f; }
constexpr si_velo_t operator ""_km_s(unsigned long long int __v) { return (si_velo_t)__v * 1000.0f; }
constexpr si_velo_t operator ""_m_s(unsigned long long int __v) { return (si_velo_t)__v; }
constexpr si_velo_t operator ""_km_h(unsigned long long int __v) { return (si_velo_t)__v / 3.6f; }
constexpr si_velo_t operator ""_m_h(unsigned long long int __v) { return (si_velo_t)__v / 3600.0; }
constexpr si_accel_t operator ""_km_s2(unsigned long long int __v) { return (si_accel_t)__v * 1000.0f; }
constexpr si_accel_t operator ""_m_s2(unsigned long long int __v) { return (si_accel_t)__v; }
constexpr si_accel_t operator ""_dm_s2(unsigned long long int __v) { return (si_accel_t)__v / 10.0f; }
constexpr si_accel_t operator ""_cm_s2(unsigned long long int __v) { return (si_accel_t)__v / 100.0f; }
constexpr si_accel_t operator ""_mm_s2(unsigned long long int __v) { return (si_accel_t)__v / 1000.0f; }
constexpr si_angle_t operator ""_rad(unsigned long long int __v) { return (si_angle_t)__v; }
constexpr si_angle_t operator ""_deg(unsigned long long int __v) { return (si_angle_t)((long double)__v / 180.0 * std::numbers::pi_v<long double>); }
constexpr si_angle_t operator ""_rad(long double __v) { return (si_angle_t)__v; }
constexpr si_angle_t operator ""_deg(long double __v) { return (si_angle_t)(__v / 180.0 * std::numbers::pi_v<long double>); }
}
}
#endif /* INCLUDE_PIXEL_UNIT_HPP_ */
|