Expand description
物理量系统:25 种物理量及其量纲安全运算。
§物理量与裸 f64 的运算
X + f64、X - f64、X * f64、X / f64 这类实现,语义都是:
裸数直接作用于物理量的内部存储值,按其当前单位理解,不做任何单位换算。
这是有意设计,不是缺陷。f64 自身不带单位,库无从判断它代表 1 m 还是 1 km;
若擅自按基准单位换算,等于替调用方做了一个它并未表达的假设。
use zmatrix::physics::basic::Distance;
// 由 from_km 构造:内部单位是 km,+ 1.0 即在 km 上加 1
let a = Distance::from_km(1.0) + 1.0;
// 由 from_m 构造:内部单位是 m,+ 1.0 即在 m 上加 1
let b = Distance::from_m(1000.0) + 1.0;
assert_eq!(a.as_km(), 2.0);
assert_eq!(b.as_m(), 1001.0);注意 a 与 b 在加 1.0 之前是相等的(都是 1000 m),加完之后不等。
这就是“裸数与物理量混算“必须付出的代价 —— 单位信息在运算符里丢失了。
需要单位安全时,请让两个物理量直接运算,把单位写进类型:
use zmatrix::physics::basic::Distance;
let a = Distance::from_km(1.0);
let b = Distance::from_m(1000.0);
let c = a + b; // 由编译器统一换算到 m,再相加
assert_eq!(c.as_m(), 2000.0);判定口径:只要参与运算的两侧有一侧是裸数,就没有单位保证; 两侧都是物理量时,单位由类型系统负责。
Modules§
Structs§
- Acceleration
- 加速度物理量结构体
- Angular
- 角度物理量结构体
- Angular
Acceleration - 角加速度物理量结构体
- Angular
Momentum - 角动量物理量结构体
- Angular
Velocity - 角速度物理量结构体
- Area
- 面积物理量结构体
- Coef
- 系数物理量结构体
- Distance
- 距离物理量结构体
- Electric
Capacitance - 电容物理量结构体
- Electric
Charge - 电荷量物理量结构体
- Electric
Conductance - 电导物理量结构体
- Electric
Current - 电流物理量结构体
- Electric
Potential - 电压(电势差)物理量结构体
- Electric
Resistance - 电阻物理量结构体
- Energy
- 能量物理量结构体
- Force
- 力物理量结构体
- Heat
Capacity - 热容
- Heat
Flux - 热流密度
- Inertia
- 转动惯量(标量)
- Magnetic
Angular Velocity - 磁角速度物理量结构体
- Magnetic
Induction - 磁感应强度物理量结构体
- Magnetic
Moment - 磁矩物理量结构体
- Mass
- 质量物理量结构体
- Momentum
- 动量物理量结构体
- Power
- 功率物理量结构体
- Temperature
- 温度(绝对温度)
- Temperature
Difference - 温度差(相对温度)
- Thermal
Conductance - 热导
- Thermal
Conductivity - 导热系数(也称热导率)
- Torque
- 力矩物理量结构体
- Vector3
- 三维向量结构体
- Velocity
- 速度物理量结构体
- Volume
- 体积物理量结构体
Enums§
- Acceleration
Type - Angular
Acceleration Type - Angular
Momentum Type - Angular
Type - Angular
Velocity Type - Area
Type - Distance
Type - Electric
Capacitance Type - Electric
Charge Type - Electric
Conductance Type - Electric
Current Type - Electric
Potential Type - Electric
Resistance Type - Energy
Type - Force
Type - Heat
Capacity Type - Heat
Flux Type - Inertia
Type - Magnetic
Angular Velocity Type - Magnetic
Induction Type - Magnetic
Moment Type - Mass
Type - Momentum
Type - Power
Type - Thermal
Conductance Type - Thermal
Conductivity Type - Torque
Type - Velocity
Type - Volume
Type
Traits§
Functions§
- time_
delta_ from_ secs_ f64 - 从 f64 秒数创建 chrono::TimeDelta(支持负数)
- time_
delta_ to_ secs_ f64 - 将 chrono::TimeDelta 转换为 f64 秒数