forked from mpusz/mp-units
feat: quantities can now be multiplied and divided by units
This commit is contained in:
@@ -82,11 +82,11 @@ int main()
|
||||
auto bismark = Ship{.length{251. * m},
|
||||
.draft{9.3 * m},
|
||||
.beam{36 * m},
|
||||
.speed{56 * (km / h)},
|
||||
.speed{56 * km / h},
|
||||
.mass{50'300 * t},
|
||||
.mainGuns{380 * mm},
|
||||
.shellMass{800 * kg},
|
||||
.shellSpeed{820. * (m / s)},
|
||||
.shellSpeed{820. * m / s},
|
||||
.power{110.45 * kW}};
|
||||
|
||||
// USS Iowa, using units from the foot-pound-second system
|
||||
@@ -97,7 +97,7 @@ int main()
|
||||
.mass{57'540 * imperial::long_ton},
|
||||
.mainGuns{16 * in},
|
||||
.shellMass{2700 * lb},
|
||||
.shellSpeed{2690. * (ft / s)},
|
||||
.shellSpeed{2690. * ft / s},
|
||||
.power{212'000 * hp}};
|
||||
|
||||
// HMS King George V, using units from the foot-pound-second system
|
||||
@@ -108,7 +108,7 @@ int main()
|
||||
.mass{42'245 * imperial::long_ton},
|
||||
.mainGuns{14 * in},
|
||||
.shellMass{1590 * lb},
|
||||
.shellSpeed{2483. * (ft / s)},
|
||||
.shellSpeed{2483. * ft / s},
|
||||
.power{110'000 * hp}};
|
||||
|
||||
print_details("KMS Bismark, defined in appropriate units from the SI system", bismark);
|
||||
|
||||
@@ -45,10 +45,10 @@ auto get_gliders()
|
||||
using namespace mp_units::si::unit_symbols;
|
||||
MP_UNITS_DIAGNOSTIC_PUSH
|
||||
MP_UNITS_DIAGNOSTIC_IGNORE_MISSING_BRACES
|
||||
static const std::array gliders = {glider{"SZD-30 Pirat", {83 * (km / h), -0.7389 * (m / s)}},
|
||||
glider{"SZD-51 Junior", {80 * (km / h), -0.6349 * (m / s)}},
|
||||
glider{"SZD-48 Jantar Std 3", {110 * (km / h), -0.77355 * (m / s)}},
|
||||
glider{"SZD-56 Diana", {110 * (km / h), -0.63657 * (m / s)}}};
|
||||
static const std::array gliders = {glider{"SZD-30 Pirat", {83 * km / h, -0.7389 * m / s}},
|
||||
glider{"SZD-51 Junior", {80 * km / h, -0.6349 * m / s}},
|
||||
glider{"SZD-48 Jantar Std 3", {110 * km / h, -0.77355 * m / s}},
|
||||
glider{"SZD-56 Diana", {110 * km / h, -0.63657 * m / s}}};
|
||||
MP_UNITS_DIAGNOSTIC_POP
|
||||
return gliders;
|
||||
}
|
||||
@@ -56,9 +56,9 @@ auto get_gliders()
|
||||
auto get_weather_conditions()
|
||||
{
|
||||
using namespace mp_units::si::unit_symbols;
|
||||
static const std::array weather_conditions = {std::pair{"Good", weather{1900 * m, 4.3 * (m / s)}},
|
||||
std::pair{"Medium", weather{1550 * m, 2.8 * (m / s)}},
|
||||
std::pair{"Bad", weather{850 * m, 1.8 * (m / s)}}};
|
||||
static const std::array weather_conditions = {std::pair{"Good", weather{1900 * m, 4.3 * m / s}},
|
||||
std::pair{"Medium", weather{1550 * m, 2.8 * m / s}},
|
||||
std::pair{"Bad", weather{850 * m, 1.8 * m / s}}};
|
||||
return weather_conditions;
|
||||
}
|
||||
|
||||
@@ -164,7 +164,7 @@ void example()
|
||||
const auto waypoints = get_waypoints();
|
||||
const auto weather_conditions = get_weather_conditions();
|
||||
const task t = {waypoints[0], waypoints[1], waypoints[0]};
|
||||
const aircraft_tow tow = {400 * m, 1.6 * (m / s)};
|
||||
const aircraft_tow tow = {400 * m, 1.6 * m / s};
|
||||
// TODO use C++20 date library when available
|
||||
// set `start_time` to 11:00 am today
|
||||
const timestamp start_time(std::chrono::system_clock::now());
|
||||
|
||||
@@ -44,7 +44,7 @@ int main()
|
||||
using namespace mp_units::si::unit_symbols;
|
||||
using namespace mp_units::international::unit_symbols;
|
||||
|
||||
constexpr quantity v1 = 110 * (km / h);
|
||||
constexpr quantity v1 = 110 * km / h;
|
||||
constexpr quantity v2 = 70 * mph;
|
||||
constexpr quantity v3 = avg_speed(220. * km, 2 * h);
|
||||
constexpr quantity v4 = avg_speed(isq::distance(140. * mi), 2 * isq::duration[h]);
|
||||
|
||||
@@ -53,7 +53,7 @@ int main()
|
||||
using state = kalman::state<quantity<isq::position_vector[m]>, quantity<isq::velocity[m / s]>>;
|
||||
|
||||
const auto interval = isq::duration(5 * s);
|
||||
const state initial = {30 * km, 40 * (m / s)};
|
||||
const state initial = {30 * km, 40 * m / s};
|
||||
const quantity<isq::position_vector[m], int> measurements[] = {30'110 * m, 30'265 * m, 30'740 * m, 30'750 * m,
|
||||
31'135 * m, 31'015 * m, 31'180 * m, 31'610 * m,
|
||||
31'960 * m, 31'865 * m};
|
||||
|
||||
@@ -53,7 +53,7 @@ int main()
|
||||
using state = kalman::state<quantity<isq::position_vector[m]>, quantity<isq::velocity[m / s]>>;
|
||||
|
||||
const auto interval = isq::duration(5 * s);
|
||||
const state initial = {30 * km, 50 * (m / s)};
|
||||
const state initial = {30 * km, 50 * m / s};
|
||||
const quantity<isq::position_vector[m], int> measurements[] = {30'160 * m, 30'365 * m, 30'890 * m, 31'050 * m,
|
||||
31'785 * m, 32'215 * m, 33'130 * m, 34'510 * m,
|
||||
36'010 * m, 37'265 * m};
|
||||
|
||||
@@ -53,7 +53,7 @@ int main()
|
||||
using state = kalman::state<quantity<isq::position_vector[m]>, quantity<isq::velocity[m / s]>,
|
||||
quantity<isq::acceleration[m / s2]>>;
|
||||
const auto interval = isq::duration(5. * s);
|
||||
const state initial = {30 * km, 50 * (m / s), 0 * (m / s2)};
|
||||
const state initial = {30 * km, 50 * m / s, 0 * m / s2};
|
||||
|
||||
const quantity<isq::position_vector[m], int> measurements[] = {30'160 * m, 30'365 * m, 30'890 * m, 31'050 * m,
|
||||
31'785 * m, 32'215 * m, 33'130 * m, 34'510 * m,
|
||||
|
||||
@@ -134,7 +134,7 @@ void example()
|
||||
using namespace mp_units;
|
||||
using namespace mp_units::si::unit_symbols;
|
||||
|
||||
const auto a = isq::acceleration(measurement{9.8, 0.1} * (m / s2));
|
||||
const auto a = isq::acceleration(measurement{9.8, 0.1} * m / s2);
|
||||
const auto t = measurement{1.2, 0.1} * s;
|
||||
|
||||
const QuantityOf<isq::velocity> auto v = a * t;
|
||||
|
||||
@@ -53,7 +53,7 @@ QUANTITY_SPEC(horizontal_length, isq::length);
|
||||
QUANTITY_SPEC(horizontal_area, isq::area, horizontal_length* isq::width);
|
||||
|
||||
inline constexpr auto g = 1 * si::standard_gravity;
|
||||
inline constexpr auto air_density = isq::mass_density(1.225 * (kg / m3));
|
||||
inline constexpr auto air_density = isq::mass_density(1.225 * kg / m3);
|
||||
|
||||
class StorageTank {
|
||||
quantity<horizontal_area[m2]> base_;
|
||||
@@ -114,7 +114,7 @@ int main()
|
||||
{
|
||||
const quantity height = isq::height(200 * mm);
|
||||
auto tank = RectangularStorageTank(horizontal_length(1'000 * mm), isq::width(500 * mm), height);
|
||||
tank.set_contents_density(1'000 * isq::mass_density[kg / m3]);
|
||||
tank.set_contents_density(1'000 * kg / m3);
|
||||
|
||||
const auto duration = std::chrono::seconds{200};
|
||||
const quantity fill_time = value_cast<int>(quantity{duration}); // time since starting fill
|
||||
|
||||
Reference in New Issue
Block a user