Skip to main content

example_new_operations/
example_new_operations.rs

1use zmatrix::physics::basic::*;
2use chrono::TimeDelta;
3
4fn main() {
5    println!("=== 新增物理量运算关系示例 ===\n");
6
7    // 1. 能量 ÷ 时间 = 功率
8    println!("1. 能量 ÷ 时间 = 功率");
9    let energy = Energy::from_joule(1000.0); // 1000 J
10    let time = TimeDelta::seconds(10); // 10 s
11    let power: Power = energy / time; // 100 W
12    println!("   1000 J ÷ 10 s = {} W", power.as_watt());
13    println!("   验证: {} W × 10 s = {} J\n", power.as_watt(), (power * time).as_joule());
14
15    // 2. 力矩 ÷ 距离 = 力
16    println!("2. 力矩 ÷ 距离 = 力");
17    let torque = Torque::from_nm(50.0); // 50 N·m
18    let distance = Distance::from_m(5.0); // 5 m
19    let force: Force = torque / distance; // 10 N
20    println!("   50 N·m ÷ 5 m = {} N", force.as_newton());
21    println!("   验证: {} N × 5 m = {} J\n", force.as_newton(), (force * distance).as_joule());
22
23    // 3. 速度 ÷ 加速度 = 时间
24    println!("3. 速度 ÷ 加速度 = 时间");
25    let velocity = Velocity::from_m_per_sec(20.0); // 20 m/s
26    let acceleration = Acceleration::from_m_per_s2(4.0); // 4 m/s²
27    let time = velocity / acceleration; // 5 s
28    println!("   20 m/s ÷ 4 m/s² = {} s", time_delta_to_secs_f64(&time));
29    println!("   验证: 4 m/s² × {} s = {} m/s\n", time_delta_to_secs_f64(&time), (acceleration * time).as_m_per_sec());
30
31    // 4. 距离 ÷ 速度 = 时间
32    println!("4. 距离 ÷ 速度 = 时间");
33    let distance = Distance::from_m(200.0); // 200 m
34    let velocity = Velocity::from_m_per_sec(25.0); // 25 m/s
35    let time = distance / velocity; // 8 s
36    println!("   200 m ÷ 25 m/s = {} s", time_delta_to_secs_f64(&time));
37    println!("   验证: 25 m/s × {} s = {} m\n", time_delta_to_secs_f64(&time), (velocity * time).as_m());
38
39    // 5. 功率 ÷ 力 = 速度
40    println!("5. 功率 ÷ 力 = 速度");
41    let power = Power::from_watt(300.0); // 300 W
42    let force = Force::from_newton(15.0); // 15 N
43    let velocity: Velocity = power / force; // 20 m/s
44    println!("   300 W ÷ 15 N = {} m/s", velocity.as_m_per_sec());
45    println!("   验证: 15 N × {} m/s = {} W\n", velocity.as_m_per_sec(), (force * velocity).as_watt());
46
47    // 6. 功率 ÷ 速度 = 力
48    println!("6. 功率 ÷ 速度 = 力");
49    let power = Power::from_watt(400.0); // 400 W
50    let velocity = Velocity::from_m_per_sec(16.0); // 16 m/s
51    let force: Force = power / velocity; // 25 N
52    println!("   400 W ÷ 16 m/s = {} N", force.as_newton());
53    println!("   验证: {} N × 16 m/s = {} W\n", force.as_newton(), (force * velocity).as_watt());
54
55    // 7. 角速度 ÷ 角加速度 = 时间
56    println!("7. 角速度 ÷ 角加速度 = 时间");
57    let omega = AngularVelocity::from_rad_per_second(12.0); // 12 rad/s
58    let alpha = AngularAcceleration::from_rad_per_second2(3.0); // 3 rad/s²
59    let time = omega / alpha; // 4 s
60    println!("   12 rad/s ÷ 3 rad/s² = {} s", time_delta_to_secs_f64(&time));
61    println!("   验证: 3 rad/s² × {} s = {} rad/s\n", time_delta_to_secs_f64(&time), (alpha * time).as_rad_per_second());
62
63    // 实际应用示例
64    println!("=== 实际应用示例 ===");
65    
66    // 汽车制动距离计算
67    println!("\n汽车制动距离计算:");
68    let initial_velocity = Velocity::from_km_per_h(60.0); // 60 km/h
69    let deceleration = Acceleration::from_m_per_s2(5.0); // 5 m/s²
70    let braking_time = initial_velocity / deceleration; // 制动时间
71    let braking_distance = initial_velocity * braking_time; // 制动距离
72    println!("   初始速度: {} km/h", initial_velocity.as_km_per_h());
73    println!("   减速度: {} m/s²", deceleration.as_m_per_s2());
74    println!("   制动时间: {:.2} s", time_delta_to_secs_f64(&braking_time));
75    println!("   制动距离: {:.2} m", braking_distance.as_m());
76
77    // 电机功率计算
78    println!("\n电机功率计算:");
79    let torque = Torque::from_nm(100.0); // 100 N·m
80    let angular_velocity = AngularVelocity::from_rad_per_second(50.0); // 50 rad/s
81    let power: Power = torque * angular_velocity; // 5000 W
82    println!("   扭矩: {} N·m", torque.as_nm());
83    println!("   角速度: {} rad/s", angular_velocity.as_rad_per_second());
84    println!("   功率: {:.1} W ({:.2} kW)", power.as_watt(), power.as_kilo_watt());
85
86    // 杠杆原理验证
87    println!("\n杠杆原理验证:");
88    let force = Force::from_newton(20.0); // 20 N
89    let lever_arm = Distance::from_m(3.0); // 3 m
90    let energy = force * lever_arm; // 60 J
91    let calculated_force: Force = energy / lever_arm; // 20 N
92    println!("   力: {} N", force.as_newton());
93    println!("   力臂: {} m", lever_arm.as_m());
94    println!("   功: {} J", energy.as_joule());
95    println!("   验证力: {} N", calculated_force.as_newton());
96
97    println!("\n=== 示例完成 ===");
98}