Skip to main content

example_physics/
example_physics.rs

1use chrono::TimeDelta;
2use zmatrix::physics::basic::*;
3
4fn main(){
5    let distance = Distance::from_m(1001.0);
6    println!("{:?}", distance.as_km());
7    // 1.001 km
8    println!("{:?}", distance.as_light_year());
9    // 1.05805783485864e-13 light years(1001 m ÷ 9.4607e15 m/ly)
10
11    let velocity = Velocity::from_m_per_sec(100.0);
12    println!("{:?}", velocity.as_km_per_h());
13    // 360.0 km/h
14
15    calculate();
16    examples_vector3();
17}
18
19fn calculate() {
20    let distance = Distance::from_m(1000.0);
21    let time = TimeDelta::seconds(10);
22    let velocity: Velocity = distance / time;
23    let acc: Acceleration = velocity / time;
24    println!("速度: {} m/s, 加速度: {} m/s²", velocity.as_m_per_sec(), acc.as_m_per_s2());
25
26    let ang: Angular = Angular::from_deg(180.0);
27    let time = TimeDelta::seconds(10);
28    let omg: AngularVelocity = ang / time;
29    let angular_accel: AngularAcceleration = omg / time;
30    println!(
31        "角速度: {} rad/s, 角加速度: {} rad/s²",
32        omg.as_rad_per_second(),
33        angular_accel.as_rad_per_second2()
34    );
35
36    let dis: Distance = Distance::from_m(1000.0);
37    let area: Area = dis * dis;
38    println!("面积: {} m²", area.as_m2());
39}
40
41fn examples_vector3(){
42    let pos_vector: Vector3<Distance> = Vector3::new(
43        Distance::from_m(1.0),
44        Distance::from_m(3.0),
45        Distance::from_m(5.0)
46    );
47    println!(
48        "位置向量: ({}, {}, {}) m",
49        pos_vector.x.as_m(),
50        pos_vector.y.as_m(),
51        pos_vector.z.as_m()
52    );
53}