use zmatrix::physics::basic::{Torque, Distance, Energy, PhysicalQuantity};
fn main() {
println!("=== 力矩物理量示例 ===\n");
println!("1. 创建不同单位的力矩:");
let t1 = Torque::from_nm(1.0); let t2 = Torque::from_mill_nm(1000.0); let t3 = Torque::from_micro_nm(1e6); let t4 = Torque::from_nano_nm(1e9); let t5 = Torque::from_knm(1e-3); let t6 = Torque::from_mnm(1e-6);
println!(" t1 = {} N·m", t1.as_nm());
println!(" t2 = {} mN·m = {} N·m", t2.as_mill_nm(), t2.as_nm());
println!(" t3 = {} μN·m = {} N·m", t3.as_micro_nm(), t3.as_nm());
println!(" t4 = {} nN·m = {} N·m", t4.as_nano_nm(), t4.as_nm());
println!(" t5 = {} kN·m = {} N·m", t5.as_knm(), t5.as_nm());
println!(" t6 = {} MN·m = {} N·m", t6.as_mnm(), t6.as_nm());
println!("\n2. 单位转换:");
println!(" 1 N·m = {} mN·m", t1.as_mill_nm());
println!(" 1 N·m = {} μN·m", t1.as_micro_nm());
println!(" 1 N·m = {} nN·m", t1.as_nano_nm());
println!(" 1 N·m = {} kN·m", t1.as_knm());
println!(" 1 N·m = {} MN·m", t1.as_mnm());
println!("\n3. 力矩运算:");
let t_sum = t1 + t2; let t_diff = t_sum - t1; let t_scale = t1 * 3.0; let t_div = t_scale / 2.0;
println!(" t1 + t2 = {} N·m", t_sum.as_nm());
println!(" t_sum - t1 = {} N·m", t_diff.as_nm());
println!(" t1 * 3 = {} N·m", t_scale.as_nm());
println!(" t_scale / 2 = {} N·m", t_div.as_nm());
println!("\n4. 力矩与距离的乘积(得到功/能量):");
let d = Distance::from_m(2.0); let work = t1 * d; println!(" 力矩: {} N·m", t1.as_nm());
println!(" 距离: {} m", d.as_m());
println!(" 功/能量: {} J", work.as_joule());
println!("\n5. 不同单位之间的运算:");
let t_micro = Torque::from_micro_nm(1e6); let t_mill = Torque::from_mill_nm(1000.0); let t_result = t_micro + t_mill; println!(" {} μN·m + {} mN·m = {} N·m",
t_micro.as_micro_nm(),
t_mill.as_mill_nm(),
t_result.as_nm());
println!("\n6. 标量与力矩的运算:");
let t_scaled = 5.0 * t1; let t_divided = 10.0 / t1; println!(" 5.0 * {} N·m = {} N·m", t1.as_nm(), t_scaled.as_nm());
println!(" 10.0 / {} N·m = {} N·m", t1.as_nm(), t_divided.as_nm());
println!("\n7. 零值检查:");
let t_zero = Torque::from_nm(0.0);
let t_nonzero = Torque::from_nm(1.0);
println!(" t_zero.is_zero() = {}", t_zero.is_zero());
println!(" t_nonzero.is_zero() = {}", t_nonzero.is_zero());
println!("\n8. 实际应用示例:");
let engine_torque = Torque::from_nm(300.0); let wheel_radius = Distance::from_m(0.3); let traction_force = engine_torque.as_nm() / wheel_radius.as_m(); println!(" 发动机扭矩: {} N·m", engine_torque.as_nm());
println!(" 车轮半径: {} m", wheel_radius.as_m());
println!(" 牵引力: {} N", traction_force);
let applied_force = 100.0; let lever_arm = Distance::from_m(0.5); let lever_torque = Torque::from_nm(applied_force * lever_arm.as_m()); println!(" 施加力: {} N", applied_force);
println!(" 力臂: {} m", lever_arm.as_m());
println!(" 杠杆力矩: {} N·m", lever_torque.as_nm());
println!("\n=== 示例完成 ===");
}