example_vector_quantity/
example_vector_quantity.rs1use zmatrix::physics::basic::{VectorQuantity, Distance, Velocity, Force, Torque, MagneticInduction, Vector3};
2
3fn main() {
4 println!("=== VectorQuantity Trait 验证示例 ===\n");
5
6 println!("1. 验证支持向量的物理量:");
8
9 let distance = Distance::from_m(10.0);
11 let velocity = Velocity::from_m_per_sec(5.0);
12 let force = Force::from_newton(20.0);
13 let torque = Torque::from_nm(15.0);
14 let magnetic_induction = MagneticInduction::from_tesla(0.5);
15
16 println!(" Distance: {} m", distance.as_m());
17 println!(" Velocity: {} m/s", velocity.as_m_per_sec());
18 println!(" Force: {} N", force.as_newton());
19 println!(" Torque: {} N·m", torque.as_nm());
20 println!(" MagneticInduction: {} T", magnetic_induction.as_tesla());
21
22 println!("\n2. 验证 VectorQuantity trait 实现:");
24
25 check_vector_quantity(distance);
27 check_vector_quantity(velocity);
28 check_vector_quantity(force);
29 check_vector_quantity(torque);
30 check_vector_quantity(magnetic_induction);
31
32 println!(" ✓ 所有物理量都正确实现了 VectorQuantity trait");
33
34 println!("\n3. 验证 Vector3 操作:");
36
37 let distance_vector = Vector3::new(
38 Distance::from_m(1.0),
39 Distance::from_m(2.0),
40 Distance::from_m(3.0)
41 );
42
43 let velocity_vector = Vector3::new(
44 Velocity::from_m_per_sec(4.0),
45 Velocity::from_m_per_sec(5.0),
46 Velocity::from_m_per_sec(6.0)
47 );
48
49 println!(" Distance Vector: ({}, {}, {}) m",
50 distance_vector.x.as_m(),
51 distance_vector.y.as_m(),
52 distance_vector.z.as_m());
53
54 println!(" Velocity Vector: ({}, {}, {}) m/s",
55 velocity_vector.x.as_m_per_sec(),
56 velocity_vector.y.as_m_per_sec(),
57 velocity_vector.z.as_m_per_sec());
58
59 let sum_distance = distance_vector + distance_vector;
61 println!(" Sum Distance Vector: ({}, {}, {}) m",
62 sum_distance.x.as_m(),
63 sum_distance.y.as_m(),
64 sum_distance.z.as_m());
65
66 println!("\n=== 验证完成 ===");
67}
68
69fn check_vector_quantity<T: VectorQuantity>(_value: T) {
71 }