Skip to main content

Module basic

Module basic 

Source
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§

heat_capacity
heat_flux
inertia
mass
thermal_conductance
vector

Structs§

Acceleration
加速度物理量结构体
Angular
角度物理量结构体
AngularAcceleration
角加速度物理量结构体
AngularMomentum
角动量物理量结构体
AngularVelocity
角速度物理量结构体
Area
面积物理量结构体
Coef
系数物理量结构体
Distance
距离物理量结构体
ElectricCapacitance
电容物理量结构体
ElectricCharge
电荷量物理量结构体
ElectricConductance
电导物理量结构体
ElectricCurrent
电流物理量结构体
ElectricPotential
电压(电势差)物理量结构体
ElectricResistance
电阻物理量结构体
Energy
能量物理量结构体
Force
力物理量结构体
HeatCapacity
热容
HeatFlux
热流密度
Inertia
转动惯量(标量)
MagneticAngularVelocity
磁角速度物理量结构体
MagneticInduction
磁感应强度物理量结构体
MagneticMoment
磁矩物理量结构体
Mass
质量物理量结构体
Momentum
动量物理量结构体
Power
功率物理量结构体
Temperature
温度(绝对温度)
TemperatureDifference
温度差(相对温度)
ThermalConductance
热导
ThermalConductivity
导热系数(也称热导率)
Torque
力矩物理量结构体
Vector3
三维向量结构体
Velocity
速度物理量结构体
Volume
体积物理量结构体

Enums§

AccelerationType
AngularAccelerationType
AngularMomentumType
AngularType
AngularVelocityType
AreaType
DistanceType
ElectricCapacitanceType
ElectricChargeType
ElectricConductanceType
ElectricCurrentType
ElectricPotentialType
ElectricResistanceType
EnergyType
ForceType
HeatCapacityType
HeatFluxType
InertiaType
MagneticAngularVelocityType
MagneticInductionType
MagneticMomentType
MassType
MomentumType
PowerType
ThermalConductanceType
ThermalConductivityType
TorqueType
VelocityType
VolumeType

Traits§

PhysicalQuantity
VectorQuantity

Functions§

time_delta_from_secs_f64
从 f64 秒数创建 chrono::TimeDelta(支持负数)
time_delta_to_secs_f64
将 chrono::TimeDelta 转换为 f64 秒数