example_power/
example_power.rs1use zmatrix::physics::basic::{Power, Energy, Force, Velocity, PhysicalQuantity};
2use zmatrix::physics::basic::time_delta_to_secs_f64;
3use chrono::TimeDelta;
4
5fn main() {
6 println!("=== 功率物理量示例 ===\n");
7
8 println!("1. 创建不同单位的功率:");
10 let p1 = Power::from_watt(1.0); let p2 = Power::from_mill_watt(1000.0); let p3 = Power::from_micro_watt(1000000.0); let p4 = Power::from_nano_watt(1000000000.0); let p5 = Power::from_kilo_watt(0.001); let p6 = Power::from_mega_watt(0.000001); let p7 = Power::from_horse_power(1.0 / 745.7); println!(" p1 = {} W", p1.as_watt());
19 println!(" p2 = {} mW = {} W", p2.as_mill_watt(), p2.as_watt());
20 println!(" p3 = {} μW = {} W", p3.as_micro_watt(), p3.as_watt());
21 println!(" p4 = {} nW = {} W", p4.as_nano_watt(), p4.as_watt());
22 println!(" p5 = {} kW = {} W", p5.as_kilo_watt(), p5.as_watt());
23 println!(" p6 = {} MW = {} W", p6.as_mega_watt(), p6.as_watt());
24 println!(" p7 = {} hp = {} W", p7.as_horse_power(), p7.as_watt());
25
26 println!("\n2. 单位转换:");
28 println!(" 1 W = {} mW", p1.as_mill_watt());
29 println!(" 1 W = {} μW", p1.as_micro_watt());
30 println!(" 1 W = {} nW", p1.as_nano_watt());
31 println!(" 1 W = {} kW", p1.as_kilo_watt());
32 println!(" 1 W = {} MW", p1.as_mega_watt());
33 println!(" 1 W = {} hp", p1.as_horse_power());
34
35 println!("\n3. 功率的运算:");
37 let p_sum = p1 + p2; let p_diff = p_sum - p1; let p_scale = p1 * 3.0; let p_div = p_scale / 2.0; println!(" p1 + p2 = {} W", p_sum.as_watt());
43 println!(" p_sum - p1 = {} W", p_diff.as_watt());
44 println!(" p1 * 3 = {} W", p_scale.as_watt());
45 println!(" p_scale / 2 = {} W", p_div.as_watt());
46
47 println!("\n4. 功率与时间的乘积(得到能量):");
49 let power = Power::from_watt(100.0); let time = TimeDelta::seconds(5); let energy: Energy = power * time; println!(" 功率: {} W", power.as_watt());
54 println!(" 时间: {} s", time_delta_to_secs_f64(&time));
55 println!(" 能量: {} J", energy.as_joule());
56 println!(" 验证: 100 W × 5 s = 500 J ✓");
57
58 println!("\n5. 时间与功率的乘积(满足交换律):");
60 let energy2: Energy = time * power; println!(" 时间 × 功率 = {} J", energy2.as_joule());
62 println!(" 验证: 5 s × 100 W = 500 J ✓");
63
64 println!("\n6. 力与速度的乘积(得到功率):");
66 let force = Force::from_newton(10.0); let velocity = Velocity::from_m_per_sec(5.0); let power_from_fv: Power = force * velocity; println!(" 力: {} N", force.as_newton());
71 println!(" 速度: {} m/s", velocity.as_m_per_sec());
72 println!(" 功率: {} W", power_from_fv.as_watt());
73 println!(" 验证: 10 N × 5 m/s = 50 W ✓");
74
75 println!("\n7. 速度与力的乘积(满足交换律):");
77 let power_from_vf: Power = velocity * force; println!(" 速度 × 力 = {} W", power_from_vf.as_watt());
79 println!(" 验证: 5 m/s × 10 N = 50 W ✓");
80
81 println!("\n8. 不同单位之间的运算:");
83 let p_micro = Power::from_micro_watt(1000000.0); let p_kilo = Power::from_kilo_watt(0.001); let p_result = p_micro + p_kilo; println!(" {} μW + {} kW = {} W",
87 p_micro.as_micro_watt(),
88 p_kilo.as_kilo_watt(),
89 p_result.as_watt());
90
91 println!("\n9. 马力转换:");
93 let hp = Power::from_horse_power(1.0); println!(" 1 hp = {} W", hp.as_watt());
95
96 let watt = Power::from_watt(745.7); println!(" 745.7 W = {} hp", watt.as_horse_power());
98
99 println!("\n10. 零值检查:");
101 let p_zero = Power::from_watt(0.0);
102 let p_nonzero = Power::from_watt(1.0);
103 println!(" p_zero.is_zero() = {}", p_zero.is_zero());
104 println!(" p_nonzero.is_zero() = {}", p_nonzero.is_zero());
105
106 println!("\n11. 实际应用示例:");
108
109 let lightbulb = Power::from_watt(60.0); let usage_time = TimeDelta::seconds(3600); let energy_consumed: Energy = lightbulb * usage_time; println!(" 60W灯泡使用1小时消耗: {} kJ", energy_consumed.as_kilo_joule());
114
115 let engine = Power::from_horse_power(200.0); println!(" 200 hp发动机 = {} kW", engine.as_kilo_watt());
118
119 let wind_turbine = Power::from_mega_watt(2.0); println!(" 2 MW风力发电机 = {} hp", wind_turbine.as_horse_power());
122
123 println!("\n12. 功率与时间的复杂计算:");
125
126 let tv = Power::from_watt(100.0); let tv_time = TimeDelta::seconds(7200); let computer = Power::from_watt(300.0); let computer_time = TimeDelta::seconds(3600); let total_energy: Energy = tv * tv_time + computer * computer_time;
134 println!(" 电视2小时 + 电脑1小时 = {} kWh", total_energy.as_kilo_joule() / 3600.0);
135
136 println!("\n13. 机械功率计算:");
138
139 let elevator_force = Force::from_kilo_newton(10.0); let elevator_speed = Velocity::from_m_per_sec(2.0); let elevator_power: Power = elevator_force * elevator_speed; println!(" 电梯功率: {} kN × {} m/s = {} kW",
144 elevator_force.as_kilo_newton(),
145 elevator_speed.as_m_per_sec(),
146 elevator_power.as_kilo_watt());
147
148 let car_force = Force::from_newton(2000.0); let car_speed = Velocity::from_km_per_h(80.0); let car_power: Power = car_force * car_speed; println!(" 汽车牵引功率: {} N × {} km/h = {} kW",
153 car_force.as_newton(),
154 car_speed.as_km_per_h(),
155 car_power.as_kilo_watt());
156
157 println!("\n=== 示例完成 ===");
158}