pub struct AngularMomentum {
pub v: f64,
/* private fields */
}Expand description
角动量物理量结构体
表示物体绕轴旋转的动量,是质量、速度和距离的乘积
§示例
use zmatrix::physics::basic::AngularMomentum;
let angular_momentum = AngularMomentum::from_kg_m2_per_second(1.0);
println!("角动量: {} kg·m²/s", angular_momentum.as_kg_m2_per_second());Fields§
§v: f64Implementations§
Source§impl AngularMomentum
impl AngularMomentum
Sourcepub fn from_kg_m2_per_second(kg: f64) -> Self
pub fn from_kg_m2_per_second(kg: f64) -> Self
Examples found in repository?
examples/example_angular_relations.rs (line 8)
3fn main() {
4 println!("=== 角动量、角速度和力矩之间的运算关系示例 ===\n");
5
6 // 示例1: 角动量 × 角速度 = 力矩
7 println!("1. 角动量 × 角速度 = 力矩");
8 let angular_momentum = AngularMomentum::from_kg_m2_per_second(10.0); // 10 kg·m²/s
9 let angular_velocity = AngularVelocity::from_rad_per_second(5.0); // 5 rad/s
10 let torque = angular_momentum * angular_velocity;
11 println!(" 角动量: {} kg·m²/s", angular_momentum.as_kg_m2_per_second());
12 println!(" 角速度: {} rad/s", angular_velocity.as_rad_per_second());
13 println!(" 力矩: {} N·m", torque.as_nm());
14 println!(" 验证: 10 × 5 = 50 ✓\n");
15
16 // 示例2: 角速度 × 角动量 = 力矩(满足交换律)
17 println!("2. 角速度 × 角动量 = 力矩(满足交换律)");
18 let torque2 = angular_velocity * angular_momentum;
19 println!(" 角速度: {} rad/s", angular_velocity.as_rad_per_second());
20 println!(" 角动量: {} kg·m²/s", angular_momentum.as_kg_m2_per_second());
21 println!(" 力矩: {} N·m", torque2.as_nm());
22 println!(" 验证: 5 × 10 = 50 ✓\n");
23
24 // 示例3: 力矩 ÷ 角速度 = 角动量
25 println!("3. 力矩 ÷ 角速度 = 角动量");
26 let torque3 = Torque::from_nm(20.0); // 20 N·m
27 let angular_velocity3 = AngularVelocity::from_rad_per_second(4.0); // 4 rad/s
28 let angular_momentum3 = torque3 / angular_velocity3;
29 println!(" 力矩: {} N·m", torque3.as_nm());
30 println!(" 角速度: {} rad/s", angular_velocity3.as_rad_per_second());
31 println!(" 角动量: {} kg·m²/s", angular_momentum3.as_kg_m2_per_second());
32 println!(" 验证: 20 ÷ 4 = 5 ✓\n");
33
34 // 示例4: 角动量 ÷ 角速度 = 转动惯量
35 println!("4. 角动量 ÷ 角速度 = 转动惯量");
36 let angular_momentum4 = AngularMomentum::from_kg_m2_per_second(20.0); // 20 kg·m²/s
37 let angular_velocity4 = AngularVelocity::from_rad_per_second(4.0); // 4 rad/s
38 let moment_of_inertia = angular_momentum4 / angular_velocity4;
39 println!(" 角动量: {} kg·m²/s", angular_momentum4.as_kg_m2_per_second());
40 println!(" 角速度: {} rad/s", angular_velocity4.as_rad_per_second());
41 println!(" 转动惯量: {} kg·m²", moment_of_inertia.as_kg_m2());
42 println!(" 验证: 20 ÷ 4 = 5 ✓\n");
43
44 // 示例5: 不同单位的测试
45 println!("5. 不同单位的测试");
46 let angular_momentum5 = AngularMomentum::from_kg_km2_per_second(1.0); // 1 kg·km²/s
47 let angular_velocity5 = AngularVelocity::from_deg_per_second(180.0); // 180°/s = π rad/s
48 let torque5 = angular_momentum5 * angular_velocity5;
49 println!(" 角动量: {} kg·km²/s", angular_momentum5.as_kg_km2_per_second());
50 println!(" 角速度: {}°/s = {} rad/s", angular_velocity5.as_deg_per_second(), angular_velocity5.as_rad_per_second());
51 println!(" 力矩: {} N·m", torque5.as_nm());
52 println!(" 验证: 1e6 × π ≈ 3.14159e6 ✓\n");
53
54 // 示例6: 新添加的Nms单位测试
55 println!("6. 新添加的Nms单位测试");
56 let angular_momentum_nms = AngularMomentum::from_nms(100.0); // 100 N·m·s
57 let angular_momentum_mill = AngularMomentum::from_mill_nms(1000.0); // 1000 mN·m·s
58 let angular_momentum_micro = AngularMomentum::from_micro_nms(1000000.0); // 1000000 μN·m·s
59 let angular_momentum_nano = AngularMomentum::from_nano_nms(1000000000.0); // 1000000000 nN·m·s
60
61 println!(" 100 N·m·s = {} kg·m²/s", angular_momentum_nms.as_kg_m2_per_second());
62 println!(" 1000 mN·m·s = {} kg·m²/s", angular_momentum_mill.as_kg_m2_per_second());
63 println!(" 1000000 μN·m·s = {} kg·m²/s", angular_momentum_micro.as_kg_m2_per_second());
64 println!(" 1000000000 nN·m·s = {} kg·m²/s", angular_momentum_nano.as_kg_m2_per_second());
65 println!(" 验证: 100 = 1 = 0.001 = 0.000001 ✓\n");
66
67 // 示例7: 不同Nms单位之间的运算
68 println!("7. 不同Nms单位之间的运算");
69 let sum = angular_momentum_nms + angular_momentum_mill + angular_momentum_micro + angular_momentum_nano;
70 println!(" 100 N·m·s + 1000 mN·m·s + 1000000 μN·m·s + 1000000000 nN·m·s = {} N·m·s", sum.as_nms());
71 println!(" 验证: 100 + 1 + 0.001 + 0.000001 = 101.001001 ✓\n");
72
73 // 示例8: Nms单位与角速度的运算
74 println!("8. Nms单位与角速度的运算");
75 let omega = AngularVelocity::from_rad_per_second(2.0); // 2 rad/s
76 let torque_from_nms = angular_momentum_nms * omega;
77 println!(" 100 N·m·s × 2 rad/s = {} N·m", torque_from_nms.as_nm());
78 println!(" 验证: 100 × 2 = 200 ✓\n");
79
80 println!("=== 物理意义说明 ===");
81 println!("• 角动量 (L) = 转动惯量 (I) × 角速度 (ω)");
82 println!("• 力矩 (τ) = 角动量 (L) × 角速度 (ω)");
83 println!("• 在旋转动力学中,这些关系非常重要");
84 println!("• 所有运算都支持不同单位之间的自动转换");
85 println!("• 新增的Nms单位:N·m·s, mN·m·s, μN·m·s, nN·m·s");
86 println!("• 1 N·m·s = 1 kg·m²/s(数值相等)");
87}Sourcepub fn from_kg_km2_per_second(kg: f64) -> Self
pub fn from_kg_km2_per_second(kg: f64) -> Self
Examples found in repository?
examples/example_angular_relations.rs (line 46)
3fn main() {
4 println!("=== 角动量、角速度和力矩之间的运算关系示例 ===\n");
5
6 // 示例1: 角动量 × 角速度 = 力矩
7 println!("1. 角动量 × 角速度 = 力矩");
8 let angular_momentum = AngularMomentum::from_kg_m2_per_second(10.0); // 10 kg·m²/s
9 let angular_velocity = AngularVelocity::from_rad_per_second(5.0); // 5 rad/s
10 let torque = angular_momentum * angular_velocity;
11 println!(" 角动量: {} kg·m²/s", angular_momentum.as_kg_m2_per_second());
12 println!(" 角速度: {} rad/s", angular_velocity.as_rad_per_second());
13 println!(" 力矩: {} N·m", torque.as_nm());
14 println!(" 验证: 10 × 5 = 50 ✓\n");
15
16 // 示例2: 角速度 × 角动量 = 力矩(满足交换律)
17 println!("2. 角速度 × 角动量 = 力矩(满足交换律)");
18 let torque2 = angular_velocity * angular_momentum;
19 println!(" 角速度: {} rad/s", angular_velocity.as_rad_per_second());
20 println!(" 角动量: {} kg·m²/s", angular_momentum.as_kg_m2_per_second());
21 println!(" 力矩: {} N·m", torque2.as_nm());
22 println!(" 验证: 5 × 10 = 50 ✓\n");
23
24 // 示例3: 力矩 ÷ 角速度 = 角动量
25 println!("3. 力矩 ÷ 角速度 = 角动量");
26 let torque3 = Torque::from_nm(20.0); // 20 N·m
27 let angular_velocity3 = AngularVelocity::from_rad_per_second(4.0); // 4 rad/s
28 let angular_momentum3 = torque3 / angular_velocity3;
29 println!(" 力矩: {} N·m", torque3.as_nm());
30 println!(" 角速度: {} rad/s", angular_velocity3.as_rad_per_second());
31 println!(" 角动量: {} kg·m²/s", angular_momentum3.as_kg_m2_per_second());
32 println!(" 验证: 20 ÷ 4 = 5 ✓\n");
33
34 // 示例4: 角动量 ÷ 角速度 = 转动惯量
35 println!("4. 角动量 ÷ 角速度 = 转动惯量");
36 let angular_momentum4 = AngularMomentum::from_kg_m2_per_second(20.0); // 20 kg·m²/s
37 let angular_velocity4 = AngularVelocity::from_rad_per_second(4.0); // 4 rad/s
38 let moment_of_inertia = angular_momentum4 / angular_velocity4;
39 println!(" 角动量: {} kg·m²/s", angular_momentum4.as_kg_m2_per_second());
40 println!(" 角速度: {} rad/s", angular_velocity4.as_rad_per_second());
41 println!(" 转动惯量: {} kg·m²", moment_of_inertia.as_kg_m2());
42 println!(" 验证: 20 ÷ 4 = 5 ✓\n");
43
44 // 示例5: 不同单位的测试
45 println!("5. 不同单位的测试");
46 let angular_momentum5 = AngularMomentum::from_kg_km2_per_second(1.0); // 1 kg·km²/s
47 let angular_velocity5 = AngularVelocity::from_deg_per_second(180.0); // 180°/s = π rad/s
48 let torque5 = angular_momentum5 * angular_velocity5;
49 println!(" 角动量: {} kg·km²/s", angular_momentum5.as_kg_km2_per_second());
50 println!(" 角速度: {}°/s = {} rad/s", angular_velocity5.as_deg_per_second(), angular_velocity5.as_rad_per_second());
51 println!(" 力矩: {} N·m", torque5.as_nm());
52 println!(" 验证: 1e6 × π ≈ 3.14159e6 ✓\n");
53
54 // 示例6: 新添加的Nms单位测试
55 println!("6. 新添加的Nms单位测试");
56 let angular_momentum_nms = AngularMomentum::from_nms(100.0); // 100 N·m·s
57 let angular_momentum_mill = AngularMomentum::from_mill_nms(1000.0); // 1000 mN·m·s
58 let angular_momentum_micro = AngularMomentum::from_micro_nms(1000000.0); // 1000000 μN·m·s
59 let angular_momentum_nano = AngularMomentum::from_nano_nms(1000000000.0); // 1000000000 nN·m·s
60
61 println!(" 100 N·m·s = {} kg·m²/s", angular_momentum_nms.as_kg_m2_per_second());
62 println!(" 1000 mN·m·s = {} kg·m²/s", angular_momentum_mill.as_kg_m2_per_second());
63 println!(" 1000000 μN·m·s = {} kg·m²/s", angular_momentum_micro.as_kg_m2_per_second());
64 println!(" 1000000000 nN·m·s = {} kg·m²/s", angular_momentum_nano.as_kg_m2_per_second());
65 println!(" 验证: 100 = 1 = 0.001 = 0.000001 ✓\n");
66
67 // 示例7: 不同Nms单位之间的运算
68 println!("7. 不同Nms单位之间的运算");
69 let sum = angular_momentum_nms + angular_momentum_mill + angular_momentum_micro + angular_momentum_nano;
70 println!(" 100 N·m·s + 1000 mN·m·s + 1000000 μN·m·s + 1000000000 nN·m·s = {} N·m·s", sum.as_nms());
71 println!(" 验证: 100 + 1 + 0.001 + 0.000001 = 101.001001 ✓\n");
72
73 // 示例8: Nms单位与角速度的运算
74 println!("8. Nms单位与角速度的运算");
75 let omega = AngularVelocity::from_rad_per_second(2.0); // 2 rad/s
76 let torque_from_nms = angular_momentum_nms * omega;
77 println!(" 100 N·m·s × 2 rad/s = {} N·m", torque_from_nms.as_nm());
78 println!(" 验证: 100 × 2 = 200 ✓\n");
79
80 println!("=== 物理意义说明 ===");
81 println!("• 角动量 (L) = 转动惯量 (I) × 角速度 (ω)");
82 println!("• 力矩 (τ) = 角动量 (L) × 角速度 (ω)");
83 println!("• 在旋转动力学中,这些关系非常重要");
84 println!("• 所有运算都支持不同单位之间的自动转换");
85 println!("• 新增的Nms单位:N·m·s, mN·m·s, μN·m·s, nN·m·s");
86 println!("• 1 N·m·s = 1 kg·m²/s(数值相等)");
87}Sourcepub fn from_nms(nms: f64) -> Self
pub fn from_nms(nms: f64) -> Self
Examples found in repository?
examples/example_angular_relations.rs (line 56)
3fn main() {
4 println!("=== 角动量、角速度和力矩之间的运算关系示例 ===\n");
5
6 // 示例1: 角动量 × 角速度 = 力矩
7 println!("1. 角动量 × 角速度 = 力矩");
8 let angular_momentum = AngularMomentum::from_kg_m2_per_second(10.0); // 10 kg·m²/s
9 let angular_velocity = AngularVelocity::from_rad_per_second(5.0); // 5 rad/s
10 let torque = angular_momentum * angular_velocity;
11 println!(" 角动量: {} kg·m²/s", angular_momentum.as_kg_m2_per_second());
12 println!(" 角速度: {} rad/s", angular_velocity.as_rad_per_second());
13 println!(" 力矩: {} N·m", torque.as_nm());
14 println!(" 验证: 10 × 5 = 50 ✓\n");
15
16 // 示例2: 角速度 × 角动量 = 力矩(满足交换律)
17 println!("2. 角速度 × 角动量 = 力矩(满足交换律)");
18 let torque2 = angular_velocity * angular_momentum;
19 println!(" 角速度: {} rad/s", angular_velocity.as_rad_per_second());
20 println!(" 角动量: {} kg·m²/s", angular_momentum.as_kg_m2_per_second());
21 println!(" 力矩: {} N·m", torque2.as_nm());
22 println!(" 验证: 5 × 10 = 50 ✓\n");
23
24 // 示例3: 力矩 ÷ 角速度 = 角动量
25 println!("3. 力矩 ÷ 角速度 = 角动量");
26 let torque3 = Torque::from_nm(20.0); // 20 N·m
27 let angular_velocity3 = AngularVelocity::from_rad_per_second(4.0); // 4 rad/s
28 let angular_momentum3 = torque3 / angular_velocity3;
29 println!(" 力矩: {} N·m", torque3.as_nm());
30 println!(" 角速度: {} rad/s", angular_velocity3.as_rad_per_second());
31 println!(" 角动量: {} kg·m²/s", angular_momentum3.as_kg_m2_per_second());
32 println!(" 验证: 20 ÷ 4 = 5 ✓\n");
33
34 // 示例4: 角动量 ÷ 角速度 = 转动惯量
35 println!("4. 角动量 ÷ 角速度 = 转动惯量");
36 let angular_momentum4 = AngularMomentum::from_kg_m2_per_second(20.0); // 20 kg·m²/s
37 let angular_velocity4 = AngularVelocity::from_rad_per_second(4.0); // 4 rad/s
38 let moment_of_inertia = angular_momentum4 / angular_velocity4;
39 println!(" 角动量: {} kg·m²/s", angular_momentum4.as_kg_m2_per_second());
40 println!(" 角速度: {} rad/s", angular_velocity4.as_rad_per_second());
41 println!(" 转动惯量: {} kg·m²", moment_of_inertia.as_kg_m2());
42 println!(" 验证: 20 ÷ 4 = 5 ✓\n");
43
44 // 示例5: 不同单位的测试
45 println!("5. 不同单位的测试");
46 let angular_momentum5 = AngularMomentum::from_kg_km2_per_second(1.0); // 1 kg·km²/s
47 let angular_velocity5 = AngularVelocity::from_deg_per_second(180.0); // 180°/s = π rad/s
48 let torque5 = angular_momentum5 * angular_velocity5;
49 println!(" 角动量: {} kg·km²/s", angular_momentum5.as_kg_km2_per_second());
50 println!(" 角速度: {}°/s = {} rad/s", angular_velocity5.as_deg_per_second(), angular_velocity5.as_rad_per_second());
51 println!(" 力矩: {} N·m", torque5.as_nm());
52 println!(" 验证: 1e6 × π ≈ 3.14159e6 ✓\n");
53
54 // 示例6: 新添加的Nms单位测试
55 println!("6. 新添加的Nms单位测试");
56 let angular_momentum_nms = AngularMomentum::from_nms(100.0); // 100 N·m·s
57 let angular_momentum_mill = AngularMomentum::from_mill_nms(1000.0); // 1000 mN·m·s
58 let angular_momentum_micro = AngularMomentum::from_micro_nms(1000000.0); // 1000000 μN·m·s
59 let angular_momentum_nano = AngularMomentum::from_nano_nms(1000000000.0); // 1000000000 nN·m·s
60
61 println!(" 100 N·m·s = {} kg·m²/s", angular_momentum_nms.as_kg_m2_per_second());
62 println!(" 1000 mN·m·s = {} kg·m²/s", angular_momentum_mill.as_kg_m2_per_second());
63 println!(" 1000000 μN·m·s = {} kg·m²/s", angular_momentum_micro.as_kg_m2_per_second());
64 println!(" 1000000000 nN·m·s = {} kg·m²/s", angular_momentum_nano.as_kg_m2_per_second());
65 println!(" 验证: 100 = 1 = 0.001 = 0.000001 ✓\n");
66
67 // 示例7: 不同Nms单位之间的运算
68 println!("7. 不同Nms单位之间的运算");
69 let sum = angular_momentum_nms + angular_momentum_mill + angular_momentum_micro + angular_momentum_nano;
70 println!(" 100 N·m·s + 1000 mN·m·s + 1000000 μN·m·s + 1000000000 nN·m·s = {} N·m·s", sum.as_nms());
71 println!(" 验证: 100 + 1 + 0.001 + 0.000001 = 101.001001 ✓\n");
72
73 // 示例8: Nms单位与角速度的运算
74 println!("8. Nms单位与角速度的运算");
75 let omega = AngularVelocity::from_rad_per_second(2.0); // 2 rad/s
76 let torque_from_nms = angular_momentum_nms * omega;
77 println!(" 100 N·m·s × 2 rad/s = {} N·m", torque_from_nms.as_nm());
78 println!(" 验证: 100 × 2 = 200 ✓\n");
79
80 println!("=== 物理意义说明 ===");
81 println!("• 角动量 (L) = 转动惯量 (I) × 角速度 (ω)");
82 println!("• 力矩 (τ) = 角动量 (L) × 角速度 (ω)");
83 println!("• 在旋转动力学中,这些关系非常重要");
84 println!("• 所有运算都支持不同单位之间的自动转换");
85 println!("• 新增的Nms单位:N·m·s, mN·m·s, μN·m·s, nN·m·s");
86 println!("• 1 N·m·s = 1 kg·m²/s(数值相等)");
87}Sourcepub fn from_mill_nms(mill_nms: f64) -> Self
pub fn from_mill_nms(mill_nms: f64) -> Self
Examples found in repository?
examples/example_angular_relations.rs (line 57)
3fn main() {
4 println!("=== 角动量、角速度和力矩之间的运算关系示例 ===\n");
5
6 // 示例1: 角动量 × 角速度 = 力矩
7 println!("1. 角动量 × 角速度 = 力矩");
8 let angular_momentum = AngularMomentum::from_kg_m2_per_second(10.0); // 10 kg·m²/s
9 let angular_velocity = AngularVelocity::from_rad_per_second(5.0); // 5 rad/s
10 let torque = angular_momentum * angular_velocity;
11 println!(" 角动量: {} kg·m²/s", angular_momentum.as_kg_m2_per_second());
12 println!(" 角速度: {} rad/s", angular_velocity.as_rad_per_second());
13 println!(" 力矩: {} N·m", torque.as_nm());
14 println!(" 验证: 10 × 5 = 50 ✓\n");
15
16 // 示例2: 角速度 × 角动量 = 力矩(满足交换律)
17 println!("2. 角速度 × 角动量 = 力矩(满足交换律)");
18 let torque2 = angular_velocity * angular_momentum;
19 println!(" 角速度: {} rad/s", angular_velocity.as_rad_per_second());
20 println!(" 角动量: {} kg·m²/s", angular_momentum.as_kg_m2_per_second());
21 println!(" 力矩: {} N·m", torque2.as_nm());
22 println!(" 验证: 5 × 10 = 50 ✓\n");
23
24 // 示例3: 力矩 ÷ 角速度 = 角动量
25 println!("3. 力矩 ÷ 角速度 = 角动量");
26 let torque3 = Torque::from_nm(20.0); // 20 N·m
27 let angular_velocity3 = AngularVelocity::from_rad_per_second(4.0); // 4 rad/s
28 let angular_momentum3 = torque3 / angular_velocity3;
29 println!(" 力矩: {} N·m", torque3.as_nm());
30 println!(" 角速度: {} rad/s", angular_velocity3.as_rad_per_second());
31 println!(" 角动量: {} kg·m²/s", angular_momentum3.as_kg_m2_per_second());
32 println!(" 验证: 20 ÷ 4 = 5 ✓\n");
33
34 // 示例4: 角动量 ÷ 角速度 = 转动惯量
35 println!("4. 角动量 ÷ 角速度 = 转动惯量");
36 let angular_momentum4 = AngularMomentum::from_kg_m2_per_second(20.0); // 20 kg·m²/s
37 let angular_velocity4 = AngularVelocity::from_rad_per_second(4.0); // 4 rad/s
38 let moment_of_inertia = angular_momentum4 / angular_velocity4;
39 println!(" 角动量: {} kg·m²/s", angular_momentum4.as_kg_m2_per_second());
40 println!(" 角速度: {} rad/s", angular_velocity4.as_rad_per_second());
41 println!(" 转动惯量: {} kg·m²", moment_of_inertia.as_kg_m2());
42 println!(" 验证: 20 ÷ 4 = 5 ✓\n");
43
44 // 示例5: 不同单位的测试
45 println!("5. 不同单位的测试");
46 let angular_momentum5 = AngularMomentum::from_kg_km2_per_second(1.0); // 1 kg·km²/s
47 let angular_velocity5 = AngularVelocity::from_deg_per_second(180.0); // 180°/s = π rad/s
48 let torque5 = angular_momentum5 * angular_velocity5;
49 println!(" 角动量: {} kg·km²/s", angular_momentum5.as_kg_km2_per_second());
50 println!(" 角速度: {}°/s = {} rad/s", angular_velocity5.as_deg_per_second(), angular_velocity5.as_rad_per_second());
51 println!(" 力矩: {} N·m", torque5.as_nm());
52 println!(" 验证: 1e6 × π ≈ 3.14159e6 ✓\n");
53
54 // 示例6: 新添加的Nms单位测试
55 println!("6. 新添加的Nms单位测试");
56 let angular_momentum_nms = AngularMomentum::from_nms(100.0); // 100 N·m·s
57 let angular_momentum_mill = AngularMomentum::from_mill_nms(1000.0); // 1000 mN·m·s
58 let angular_momentum_micro = AngularMomentum::from_micro_nms(1000000.0); // 1000000 μN·m·s
59 let angular_momentum_nano = AngularMomentum::from_nano_nms(1000000000.0); // 1000000000 nN·m·s
60
61 println!(" 100 N·m·s = {} kg·m²/s", angular_momentum_nms.as_kg_m2_per_second());
62 println!(" 1000 mN·m·s = {} kg·m²/s", angular_momentum_mill.as_kg_m2_per_second());
63 println!(" 1000000 μN·m·s = {} kg·m²/s", angular_momentum_micro.as_kg_m2_per_second());
64 println!(" 1000000000 nN·m·s = {} kg·m²/s", angular_momentum_nano.as_kg_m2_per_second());
65 println!(" 验证: 100 = 1 = 0.001 = 0.000001 ✓\n");
66
67 // 示例7: 不同Nms单位之间的运算
68 println!("7. 不同Nms单位之间的运算");
69 let sum = angular_momentum_nms + angular_momentum_mill + angular_momentum_micro + angular_momentum_nano;
70 println!(" 100 N·m·s + 1000 mN·m·s + 1000000 μN·m·s + 1000000000 nN·m·s = {} N·m·s", sum.as_nms());
71 println!(" 验证: 100 + 1 + 0.001 + 0.000001 = 101.001001 ✓\n");
72
73 // 示例8: Nms单位与角速度的运算
74 println!("8. Nms单位与角速度的运算");
75 let omega = AngularVelocity::from_rad_per_second(2.0); // 2 rad/s
76 let torque_from_nms = angular_momentum_nms * omega;
77 println!(" 100 N·m·s × 2 rad/s = {} N·m", torque_from_nms.as_nm());
78 println!(" 验证: 100 × 2 = 200 ✓\n");
79
80 println!("=== 物理意义说明 ===");
81 println!("• 角动量 (L) = 转动惯量 (I) × 角速度 (ω)");
82 println!("• 力矩 (τ) = 角动量 (L) × 角速度 (ω)");
83 println!("• 在旋转动力学中,这些关系非常重要");
84 println!("• 所有运算都支持不同单位之间的自动转换");
85 println!("• 新增的Nms单位:N·m·s, mN·m·s, μN·m·s, nN·m·s");
86 println!("• 1 N·m·s = 1 kg·m²/s(数值相等)");
87}Sourcepub fn from_micro_nms(micro_nms: f64) -> Self
pub fn from_micro_nms(micro_nms: f64) -> Self
Examples found in repository?
examples/example_angular_relations.rs (line 58)
3fn main() {
4 println!("=== 角动量、角速度和力矩之间的运算关系示例 ===\n");
5
6 // 示例1: 角动量 × 角速度 = 力矩
7 println!("1. 角动量 × 角速度 = 力矩");
8 let angular_momentum = AngularMomentum::from_kg_m2_per_second(10.0); // 10 kg·m²/s
9 let angular_velocity = AngularVelocity::from_rad_per_second(5.0); // 5 rad/s
10 let torque = angular_momentum * angular_velocity;
11 println!(" 角动量: {} kg·m²/s", angular_momentum.as_kg_m2_per_second());
12 println!(" 角速度: {} rad/s", angular_velocity.as_rad_per_second());
13 println!(" 力矩: {} N·m", torque.as_nm());
14 println!(" 验证: 10 × 5 = 50 ✓\n");
15
16 // 示例2: 角速度 × 角动量 = 力矩(满足交换律)
17 println!("2. 角速度 × 角动量 = 力矩(满足交换律)");
18 let torque2 = angular_velocity * angular_momentum;
19 println!(" 角速度: {} rad/s", angular_velocity.as_rad_per_second());
20 println!(" 角动量: {} kg·m²/s", angular_momentum.as_kg_m2_per_second());
21 println!(" 力矩: {} N·m", torque2.as_nm());
22 println!(" 验证: 5 × 10 = 50 ✓\n");
23
24 // 示例3: 力矩 ÷ 角速度 = 角动量
25 println!("3. 力矩 ÷ 角速度 = 角动量");
26 let torque3 = Torque::from_nm(20.0); // 20 N·m
27 let angular_velocity3 = AngularVelocity::from_rad_per_second(4.0); // 4 rad/s
28 let angular_momentum3 = torque3 / angular_velocity3;
29 println!(" 力矩: {} N·m", torque3.as_nm());
30 println!(" 角速度: {} rad/s", angular_velocity3.as_rad_per_second());
31 println!(" 角动量: {} kg·m²/s", angular_momentum3.as_kg_m2_per_second());
32 println!(" 验证: 20 ÷ 4 = 5 ✓\n");
33
34 // 示例4: 角动量 ÷ 角速度 = 转动惯量
35 println!("4. 角动量 ÷ 角速度 = 转动惯量");
36 let angular_momentum4 = AngularMomentum::from_kg_m2_per_second(20.0); // 20 kg·m²/s
37 let angular_velocity4 = AngularVelocity::from_rad_per_second(4.0); // 4 rad/s
38 let moment_of_inertia = angular_momentum4 / angular_velocity4;
39 println!(" 角动量: {} kg·m²/s", angular_momentum4.as_kg_m2_per_second());
40 println!(" 角速度: {} rad/s", angular_velocity4.as_rad_per_second());
41 println!(" 转动惯量: {} kg·m²", moment_of_inertia.as_kg_m2());
42 println!(" 验证: 20 ÷ 4 = 5 ✓\n");
43
44 // 示例5: 不同单位的测试
45 println!("5. 不同单位的测试");
46 let angular_momentum5 = AngularMomentum::from_kg_km2_per_second(1.0); // 1 kg·km²/s
47 let angular_velocity5 = AngularVelocity::from_deg_per_second(180.0); // 180°/s = π rad/s
48 let torque5 = angular_momentum5 * angular_velocity5;
49 println!(" 角动量: {} kg·km²/s", angular_momentum5.as_kg_km2_per_second());
50 println!(" 角速度: {}°/s = {} rad/s", angular_velocity5.as_deg_per_second(), angular_velocity5.as_rad_per_second());
51 println!(" 力矩: {} N·m", torque5.as_nm());
52 println!(" 验证: 1e6 × π ≈ 3.14159e6 ✓\n");
53
54 // 示例6: 新添加的Nms单位测试
55 println!("6. 新添加的Nms单位测试");
56 let angular_momentum_nms = AngularMomentum::from_nms(100.0); // 100 N·m·s
57 let angular_momentum_mill = AngularMomentum::from_mill_nms(1000.0); // 1000 mN·m·s
58 let angular_momentum_micro = AngularMomentum::from_micro_nms(1000000.0); // 1000000 μN·m·s
59 let angular_momentum_nano = AngularMomentum::from_nano_nms(1000000000.0); // 1000000000 nN·m·s
60
61 println!(" 100 N·m·s = {} kg·m²/s", angular_momentum_nms.as_kg_m2_per_second());
62 println!(" 1000 mN·m·s = {} kg·m²/s", angular_momentum_mill.as_kg_m2_per_second());
63 println!(" 1000000 μN·m·s = {} kg·m²/s", angular_momentum_micro.as_kg_m2_per_second());
64 println!(" 1000000000 nN·m·s = {} kg·m²/s", angular_momentum_nano.as_kg_m2_per_second());
65 println!(" 验证: 100 = 1 = 0.001 = 0.000001 ✓\n");
66
67 // 示例7: 不同Nms单位之间的运算
68 println!("7. 不同Nms单位之间的运算");
69 let sum = angular_momentum_nms + angular_momentum_mill + angular_momentum_micro + angular_momentum_nano;
70 println!(" 100 N·m·s + 1000 mN·m·s + 1000000 μN·m·s + 1000000000 nN·m·s = {} N·m·s", sum.as_nms());
71 println!(" 验证: 100 + 1 + 0.001 + 0.000001 = 101.001001 ✓\n");
72
73 // 示例8: Nms单位与角速度的运算
74 println!("8. Nms单位与角速度的运算");
75 let omega = AngularVelocity::from_rad_per_second(2.0); // 2 rad/s
76 let torque_from_nms = angular_momentum_nms * omega;
77 println!(" 100 N·m·s × 2 rad/s = {} N·m", torque_from_nms.as_nm());
78 println!(" 验证: 100 × 2 = 200 ✓\n");
79
80 println!("=== 物理意义说明 ===");
81 println!("• 角动量 (L) = 转动惯量 (I) × 角速度 (ω)");
82 println!("• 力矩 (τ) = 角动量 (L) × 角速度 (ω)");
83 println!("• 在旋转动力学中,这些关系非常重要");
84 println!("• 所有运算都支持不同单位之间的自动转换");
85 println!("• 新增的Nms单位:N·m·s, mN·m·s, μN·m·s, nN·m·s");
86 println!("• 1 N·m·s = 1 kg·m²/s(数值相等)");
87}Sourcepub fn from_nano_nms(nano_nms: f64) -> Self
pub fn from_nano_nms(nano_nms: f64) -> Self
Examples found in repository?
examples/example_angular_relations.rs (line 59)
3fn main() {
4 println!("=== 角动量、角速度和力矩之间的运算关系示例 ===\n");
5
6 // 示例1: 角动量 × 角速度 = 力矩
7 println!("1. 角动量 × 角速度 = 力矩");
8 let angular_momentum = AngularMomentum::from_kg_m2_per_second(10.0); // 10 kg·m²/s
9 let angular_velocity = AngularVelocity::from_rad_per_second(5.0); // 5 rad/s
10 let torque = angular_momentum * angular_velocity;
11 println!(" 角动量: {} kg·m²/s", angular_momentum.as_kg_m2_per_second());
12 println!(" 角速度: {} rad/s", angular_velocity.as_rad_per_second());
13 println!(" 力矩: {} N·m", torque.as_nm());
14 println!(" 验证: 10 × 5 = 50 ✓\n");
15
16 // 示例2: 角速度 × 角动量 = 力矩(满足交换律)
17 println!("2. 角速度 × 角动量 = 力矩(满足交换律)");
18 let torque2 = angular_velocity * angular_momentum;
19 println!(" 角速度: {} rad/s", angular_velocity.as_rad_per_second());
20 println!(" 角动量: {} kg·m²/s", angular_momentum.as_kg_m2_per_second());
21 println!(" 力矩: {} N·m", torque2.as_nm());
22 println!(" 验证: 5 × 10 = 50 ✓\n");
23
24 // 示例3: 力矩 ÷ 角速度 = 角动量
25 println!("3. 力矩 ÷ 角速度 = 角动量");
26 let torque3 = Torque::from_nm(20.0); // 20 N·m
27 let angular_velocity3 = AngularVelocity::from_rad_per_second(4.0); // 4 rad/s
28 let angular_momentum3 = torque3 / angular_velocity3;
29 println!(" 力矩: {} N·m", torque3.as_nm());
30 println!(" 角速度: {} rad/s", angular_velocity3.as_rad_per_second());
31 println!(" 角动量: {} kg·m²/s", angular_momentum3.as_kg_m2_per_second());
32 println!(" 验证: 20 ÷ 4 = 5 ✓\n");
33
34 // 示例4: 角动量 ÷ 角速度 = 转动惯量
35 println!("4. 角动量 ÷ 角速度 = 转动惯量");
36 let angular_momentum4 = AngularMomentum::from_kg_m2_per_second(20.0); // 20 kg·m²/s
37 let angular_velocity4 = AngularVelocity::from_rad_per_second(4.0); // 4 rad/s
38 let moment_of_inertia = angular_momentum4 / angular_velocity4;
39 println!(" 角动量: {} kg·m²/s", angular_momentum4.as_kg_m2_per_second());
40 println!(" 角速度: {} rad/s", angular_velocity4.as_rad_per_second());
41 println!(" 转动惯量: {} kg·m²", moment_of_inertia.as_kg_m2());
42 println!(" 验证: 20 ÷ 4 = 5 ✓\n");
43
44 // 示例5: 不同单位的测试
45 println!("5. 不同单位的测试");
46 let angular_momentum5 = AngularMomentum::from_kg_km2_per_second(1.0); // 1 kg·km²/s
47 let angular_velocity5 = AngularVelocity::from_deg_per_second(180.0); // 180°/s = π rad/s
48 let torque5 = angular_momentum5 * angular_velocity5;
49 println!(" 角动量: {} kg·km²/s", angular_momentum5.as_kg_km2_per_second());
50 println!(" 角速度: {}°/s = {} rad/s", angular_velocity5.as_deg_per_second(), angular_velocity5.as_rad_per_second());
51 println!(" 力矩: {} N·m", torque5.as_nm());
52 println!(" 验证: 1e6 × π ≈ 3.14159e6 ✓\n");
53
54 // 示例6: 新添加的Nms单位测试
55 println!("6. 新添加的Nms单位测试");
56 let angular_momentum_nms = AngularMomentum::from_nms(100.0); // 100 N·m·s
57 let angular_momentum_mill = AngularMomentum::from_mill_nms(1000.0); // 1000 mN·m·s
58 let angular_momentum_micro = AngularMomentum::from_micro_nms(1000000.0); // 1000000 μN·m·s
59 let angular_momentum_nano = AngularMomentum::from_nano_nms(1000000000.0); // 1000000000 nN·m·s
60
61 println!(" 100 N·m·s = {} kg·m²/s", angular_momentum_nms.as_kg_m2_per_second());
62 println!(" 1000 mN·m·s = {} kg·m²/s", angular_momentum_mill.as_kg_m2_per_second());
63 println!(" 1000000 μN·m·s = {} kg·m²/s", angular_momentum_micro.as_kg_m2_per_second());
64 println!(" 1000000000 nN·m·s = {} kg·m²/s", angular_momentum_nano.as_kg_m2_per_second());
65 println!(" 验证: 100 = 1 = 0.001 = 0.000001 ✓\n");
66
67 // 示例7: 不同Nms单位之间的运算
68 println!("7. 不同Nms单位之间的运算");
69 let sum = angular_momentum_nms + angular_momentum_mill + angular_momentum_micro + angular_momentum_nano;
70 println!(" 100 N·m·s + 1000 mN·m·s + 1000000 μN·m·s + 1000000000 nN·m·s = {} N·m·s", sum.as_nms());
71 println!(" 验证: 100 + 1 + 0.001 + 0.000001 = 101.001001 ✓\n");
72
73 // 示例8: Nms单位与角速度的运算
74 println!("8. Nms单位与角速度的运算");
75 let omega = AngularVelocity::from_rad_per_second(2.0); // 2 rad/s
76 let torque_from_nms = angular_momentum_nms * omega;
77 println!(" 100 N·m·s × 2 rad/s = {} N·m", torque_from_nms.as_nm());
78 println!(" 验证: 100 × 2 = 200 ✓\n");
79
80 println!("=== 物理意义说明 ===");
81 println!("• 角动量 (L) = 转动惯量 (I) × 角速度 (ω)");
82 println!("• 力矩 (τ) = 角动量 (L) × 角速度 (ω)");
83 println!("• 在旋转动力学中,这些关系非常重要");
84 println!("• 所有运算都支持不同单位之间的自动转换");
85 println!("• 新增的Nms单位:N·m·s, mN·m·s, μN·m·s, nN·m·s");
86 println!("• 1 N·m·s = 1 kg·m²/s(数值相等)");
87}Sourcepub fn as_kg_m2_per_second(&self) -> f64
pub fn as_kg_m2_per_second(&self) -> f64
Examples found in repository?
examples/example_angular_relations.rs (line 11)
3fn main() {
4 println!("=== 角动量、角速度和力矩之间的运算关系示例 ===\n");
5
6 // 示例1: 角动量 × 角速度 = 力矩
7 println!("1. 角动量 × 角速度 = 力矩");
8 let angular_momentum = AngularMomentum::from_kg_m2_per_second(10.0); // 10 kg·m²/s
9 let angular_velocity = AngularVelocity::from_rad_per_second(5.0); // 5 rad/s
10 let torque = angular_momentum * angular_velocity;
11 println!(" 角动量: {} kg·m²/s", angular_momentum.as_kg_m2_per_second());
12 println!(" 角速度: {} rad/s", angular_velocity.as_rad_per_second());
13 println!(" 力矩: {} N·m", torque.as_nm());
14 println!(" 验证: 10 × 5 = 50 ✓\n");
15
16 // 示例2: 角速度 × 角动量 = 力矩(满足交换律)
17 println!("2. 角速度 × 角动量 = 力矩(满足交换律)");
18 let torque2 = angular_velocity * angular_momentum;
19 println!(" 角速度: {} rad/s", angular_velocity.as_rad_per_second());
20 println!(" 角动量: {} kg·m²/s", angular_momentum.as_kg_m2_per_second());
21 println!(" 力矩: {} N·m", torque2.as_nm());
22 println!(" 验证: 5 × 10 = 50 ✓\n");
23
24 // 示例3: 力矩 ÷ 角速度 = 角动量
25 println!("3. 力矩 ÷ 角速度 = 角动量");
26 let torque3 = Torque::from_nm(20.0); // 20 N·m
27 let angular_velocity3 = AngularVelocity::from_rad_per_second(4.0); // 4 rad/s
28 let angular_momentum3 = torque3 / angular_velocity3;
29 println!(" 力矩: {} N·m", torque3.as_nm());
30 println!(" 角速度: {} rad/s", angular_velocity3.as_rad_per_second());
31 println!(" 角动量: {} kg·m²/s", angular_momentum3.as_kg_m2_per_second());
32 println!(" 验证: 20 ÷ 4 = 5 ✓\n");
33
34 // 示例4: 角动量 ÷ 角速度 = 转动惯量
35 println!("4. 角动量 ÷ 角速度 = 转动惯量");
36 let angular_momentum4 = AngularMomentum::from_kg_m2_per_second(20.0); // 20 kg·m²/s
37 let angular_velocity4 = AngularVelocity::from_rad_per_second(4.0); // 4 rad/s
38 let moment_of_inertia = angular_momentum4 / angular_velocity4;
39 println!(" 角动量: {} kg·m²/s", angular_momentum4.as_kg_m2_per_second());
40 println!(" 角速度: {} rad/s", angular_velocity4.as_rad_per_second());
41 println!(" 转动惯量: {} kg·m²", moment_of_inertia.as_kg_m2());
42 println!(" 验证: 20 ÷ 4 = 5 ✓\n");
43
44 // 示例5: 不同单位的测试
45 println!("5. 不同单位的测试");
46 let angular_momentum5 = AngularMomentum::from_kg_km2_per_second(1.0); // 1 kg·km²/s
47 let angular_velocity5 = AngularVelocity::from_deg_per_second(180.0); // 180°/s = π rad/s
48 let torque5 = angular_momentum5 * angular_velocity5;
49 println!(" 角动量: {} kg·km²/s", angular_momentum5.as_kg_km2_per_second());
50 println!(" 角速度: {}°/s = {} rad/s", angular_velocity5.as_deg_per_second(), angular_velocity5.as_rad_per_second());
51 println!(" 力矩: {} N·m", torque5.as_nm());
52 println!(" 验证: 1e6 × π ≈ 3.14159e6 ✓\n");
53
54 // 示例6: 新添加的Nms单位测试
55 println!("6. 新添加的Nms单位测试");
56 let angular_momentum_nms = AngularMomentum::from_nms(100.0); // 100 N·m·s
57 let angular_momentum_mill = AngularMomentum::from_mill_nms(1000.0); // 1000 mN·m·s
58 let angular_momentum_micro = AngularMomentum::from_micro_nms(1000000.0); // 1000000 μN·m·s
59 let angular_momentum_nano = AngularMomentum::from_nano_nms(1000000000.0); // 1000000000 nN·m·s
60
61 println!(" 100 N·m·s = {} kg·m²/s", angular_momentum_nms.as_kg_m2_per_second());
62 println!(" 1000 mN·m·s = {} kg·m²/s", angular_momentum_mill.as_kg_m2_per_second());
63 println!(" 1000000 μN·m·s = {} kg·m²/s", angular_momentum_micro.as_kg_m2_per_second());
64 println!(" 1000000000 nN·m·s = {} kg·m²/s", angular_momentum_nano.as_kg_m2_per_second());
65 println!(" 验证: 100 = 1 = 0.001 = 0.000001 ✓\n");
66
67 // 示例7: 不同Nms单位之间的运算
68 println!("7. 不同Nms单位之间的运算");
69 let sum = angular_momentum_nms + angular_momentum_mill + angular_momentum_micro + angular_momentum_nano;
70 println!(" 100 N·m·s + 1000 mN·m·s + 1000000 μN·m·s + 1000000000 nN·m·s = {} N·m·s", sum.as_nms());
71 println!(" 验证: 100 + 1 + 0.001 + 0.000001 = 101.001001 ✓\n");
72
73 // 示例8: Nms单位与角速度的运算
74 println!("8. Nms单位与角速度的运算");
75 let omega = AngularVelocity::from_rad_per_second(2.0); // 2 rad/s
76 let torque_from_nms = angular_momentum_nms * omega;
77 println!(" 100 N·m·s × 2 rad/s = {} N·m", torque_from_nms.as_nm());
78 println!(" 验证: 100 × 2 = 200 ✓\n");
79
80 println!("=== 物理意义说明 ===");
81 println!("• 角动量 (L) = 转动惯量 (I) × 角速度 (ω)");
82 println!("• 力矩 (τ) = 角动量 (L) × 角速度 (ω)");
83 println!("• 在旋转动力学中,这些关系非常重要");
84 println!("• 所有运算都支持不同单位之间的自动转换");
85 println!("• 新增的Nms单位:N·m·s, mN·m·s, μN·m·s, nN·m·s");
86 println!("• 1 N·m·s = 1 kg·m²/s(数值相等)");
87}Sourcepub fn as_kg_km2_per_second(&self) -> f64
pub fn as_kg_km2_per_second(&self) -> f64
Examples found in repository?
examples/example_angular_relations.rs (line 49)
3fn main() {
4 println!("=== 角动量、角速度和力矩之间的运算关系示例 ===\n");
5
6 // 示例1: 角动量 × 角速度 = 力矩
7 println!("1. 角动量 × 角速度 = 力矩");
8 let angular_momentum = AngularMomentum::from_kg_m2_per_second(10.0); // 10 kg·m²/s
9 let angular_velocity = AngularVelocity::from_rad_per_second(5.0); // 5 rad/s
10 let torque = angular_momentum * angular_velocity;
11 println!(" 角动量: {} kg·m²/s", angular_momentum.as_kg_m2_per_second());
12 println!(" 角速度: {} rad/s", angular_velocity.as_rad_per_second());
13 println!(" 力矩: {} N·m", torque.as_nm());
14 println!(" 验证: 10 × 5 = 50 ✓\n");
15
16 // 示例2: 角速度 × 角动量 = 力矩(满足交换律)
17 println!("2. 角速度 × 角动量 = 力矩(满足交换律)");
18 let torque2 = angular_velocity * angular_momentum;
19 println!(" 角速度: {} rad/s", angular_velocity.as_rad_per_second());
20 println!(" 角动量: {} kg·m²/s", angular_momentum.as_kg_m2_per_second());
21 println!(" 力矩: {} N·m", torque2.as_nm());
22 println!(" 验证: 5 × 10 = 50 ✓\n");
23
24 // 示例3: 力矩 ÷ 角速度 = 角动量
25 println!("3. 力矩 ÷ 角速度 = 角动量");
26 let torque3 = Torque::from_nm(20.0); // 20 N·m
27 let angular_velocity3 = AngularVelocity::from_rad_per_second(4.0); // 4 rad/s
28 let angular_momentum3 = torque3 / angular_velocity3;
29 println!(" 力矩: {} N·m", torque3.as_nm());
30 println!(" 角速度: {} rad/s", angular_velocity3.as_rad_per_second());
31 println!(" 角动量: {} kg·m²/s", angular_momentum3.as_kg_m2_per_second());
32 println!(" 验证: 20 ÷ 4 = 5 ✓\n");
33
34 // 示例4: 角动量 ÷ 角速度 = 转动惯量
35 println!("4. 角动量 ÷ 角速度 = 转动惯量");
36 let angular_momentum4 = AngularMomentum::from_kg_m2_per_second(20.0); // 20 kg·m²/s
37 let angular_velocity4 = AngularVelocity::from_rad_per_second(4.0); // 4 rad/s
38 let moment_of_inertia = angular_momentum4 / angular_velocity4;
39 println!(" 角动量: {} kg·m²/s", angular_momentum4.as_kg_m2_per_second());
40 println!(" 角速度: {} rad/s", angular_velocity4.as_rad_per_second());
41 println!(" 转动惯量: {} kg·m²", moment_of_inertia.as_kg_m2());
42 println!(" 验证: 20 ÷ 4 = 5 ✓\n");
43
44 // 示例5: 不同单位的测试
45 println!("5. 不同单位的测试");
46 let angular_momentum5 = AngularMomentum::from_kg_km2_per_second(1.0); // 1 kg·km²/s
47 let angular_velocity5 = AngularVelocity::from_deg_per_second(180.0); // 180°/s = π rad/s
48 let torque5 = angular_momentum5 * angular_velocity5;
49 println!(" 角动量: {} kg·km²/s", angular_momentum5.as_kg_km2_per_second());
50 println!(" 角速度: {}°/s = {} rad/s", angular_velocity5.as_deg_per_second(), angular_velocity5.as_rad_per_second());
51 println!(" 力矩: {} N·m", torque5.as_nm());
52 println!(" 验证: 1e6 × π ≈ 3.14159e6 ✓\n");
53
54 // 示例6: 新添加的Nms单位测试
55 println!("6. 新添加的Nms单位测试");
56 let angular_momentum_nms = AngularMomentum::from_nms(100.0); // 100 N·m·s
57 let angular_momentum_mill = AngularMomentum::from_mill_nms(1000.0); // 1000 mN·m·s
58 let angular_momentum_micro = AngularMomentum::from_micro_nms(1000000.0); // 1000000 μN·m·s
59 let angular_momentum_nano = AngularMomentum::from_nano_nms(1000000000.0); // 1000000000 nN·m·s
60
61 println!(" 100 N·m·s = {} kg·m²/s", angular_momentum_nms.as_kg_m2_per_second());
62 println!(" 1000 mN·m·s = {} kg·m²/s", angular_momentum_mill.as_kg_m2_per_second());
63 println!(" 1000000 μN·m·s = {} kg·m²/s", angular_momentum_micro.as_kg_m2_per_second());
64 println!(" 1000000000 nN·m·s = {} kg·m²/s", angular_momentum_nano.as_kg_m2_per_second());
65 println!(" 验证: 100 = 1 = 0.001 = 0.000001 ✓\n");
66
67 // 示例7: 不同Nms单位之间的运算
68 println!("7. 不同Nms单位之间的运算");
69 let sum = angular_momentum_nms + angular_momentum_mill + angular_momentum_micro + angular_momentum_nano;
70 println!(" 100 N·m·s + 1000 mN·m·s + 1000000 μN·m·s + 1000000000 nN·m·s = {} N·m·s", sum.as_nms());
71 println!(" 验证: 100 + 1 + 0.001 + 0.000001 = 101.001001 ✓\n");
72
73 // 示例8: Nms单位与角速度的运算
74 println!("8. Nms单位与角速度的运算");
75 let omega = AngularVelocity::from_rad_per_second(2.0); // 2 rad/s
76 let torque_from_nms = angular_momentum_nms * omega;
77 println!(" 100 N·m·s × 2 rad/s = {} N·m", torque_from_nms.as_nm());
78 println!(" 验证: 100 × 2 = 200 ✓\n");
79
80 println!("=== 物理意义说明 ===");
81 println!("• 角动量 (L) = 转动惯量 (I) × 角速度 (ω)");
82 println!("• 力矩 (τ) = 角动量 (L) × 角速度 (ω)");
83 println!("• 在旋转动力学中,这些关系非常重要");
84 println!("• 所有运算都支持不同单位之间的自动转换");
85 println!("• 新增的Nms单位:N·m·s, mN·m·s, μN·m·s, nN·m·s");
86 println!("• 1 N·m·s = 1 kg·m²/s(数值相等)");
87}Sourcepub fn as_nms(&self) -> f64
pub fn as_nms(&self) -> f64
Examples found in repository?
examples/example_angular_relations.rs (line 70)
3fn main() {
4 println!("=== 角动量、角速度和力矩之间的运算关系示例 ===\n");
5
6 // 示例1: 角动量 × 角速度 = 力矩
7 println!("1. 角动量 × 角速度 = 力矩");
8 let angular_momentum = AngularMomentum::from_kg_m2_per_second(10.0); // 10 kg·m²/s
9 let angular_velocity = AngularVelocity::from_rad_per_second(5.0); // 5 rad/s
10 let torque = angular_momentum * angular_velocity;
11 println!(" 角动量: {} kg·m²/s", angular_momentum.as_kg_m2_per_second());
12 println!(" 角速度: {} rad/s", angular_velocity.as_rad_per_second());
13 println!(" 力矩: {} N·m", torque.as_nm());
14 println!(" 验证: 10 × 5 = 50 ✓\n");
15
16 // 示例2: 角速度 × 角动量 = 力矩(满足交换律)
17 println!("2. 角速度 × 角动量 = 力矩(满足交换律)");
18 let torque2 = angular_velocity * angular_momentum;
19 println!(" 角速度: {} rad/s", angular_velocity.as_rad_per_second());
20 println!(" 角动量: {} kg·m²/s", angular_momentum.as_kg_m2_per_second());
21 println!(" 力矩: {} N·m", torque2.as_nm());
22 println!(" 验证: 5 × 10 = 50 ✓\n");
23
24 // 示例3: 力矩 ÷ 角速度 = 角动量
25 println!("3. 力矩 ÷ 角速度 = 角动量");
26 let torque3 = Torque::from_nm(20.0); // 20 N·m
27 let angular_velocity3 = AngularVelocity::from_rad_per_second(4.0); // 4 rad/s
28 let angular_momentum3 = torque3 / angular_velocity3;
29 println!(" 力矩: {} N·m", torque3.as_nm());
30 println!(" 角速度: {} rad/s", angular_velocity3.as_rad_per_second());
31 println!(" 角动量: {} kg·m²/s", angular_momentum3.as_kg_m2_per_second());
32 println!(" 验证: 20 ÷ 4 = 5 ✓\n");
33
34 // 示例4: 角动量 ÷ 角速度 = 转动惯量
35 println!("4. 角动量 ÷ 角速度 = 转动惯量");
36 let angular_momentum4 = AngularMomentum::from_kg_m2_per_second(20.0); // 20 kg·m²/s
37 let angular_velocity4 = AngularVelocity::from_rad_per_second(4.0); // 4 rad/s
38 let moment_of_inertia = angular_momentum4 / angular_velocity4;
39 println!(" 角动量: {} kg·m²/s", angular_momentum4.as_kg_m2_per_second());
40 println!(" 角速度: {} rad/s", angular_velocity4.as_rad_per_second());
41 println!(" 转动惯量: {} kg·m²", moment_of_inertia.as_kg_m2());
42 println!(" 验证: 20 ÷ 4 = 5 ✓\n");
43
44 // 示例5: 不同单位的测试
45 println!("5. 不同单位的测试");
46 let angular_momentum5 = AngularMomentum::from_kg_km2_per_second(1.0); // 1 kg·km²/s
47 let angular_velocity5 = AngularVelocity::from_deg_per_second(180.0); // 180°/s = π rad/s
48 let torque5 = angular_momentum5 * angular_velocity5;
49 println!(" 角动量: {} kg·km²/s", angular_momentum5.as_kg_km2_per_second());
50 println!(" 角速度: {}°/s = {} rad/s", angular_velocity5.as_deg_per_second(), angular_velocity5.as_rad_per_second());
51 println!(" 力矩: {} N·m", torque5.as_nm());
52 println!(" 验证: 1e6 × π ≈ 3.14159e6 ✓\n");
53
54 // 示例6: 新添加的Nms单位测试
55 println!("6. 新添加的Nms单位测试");
56 let angular_momentum_nms = AngularMomentum::from_nms(100.0); // 100 N·m·s
57 let angular_momentum_mill = AngularMomentum::from_mill_nms(1000.0); // 1000 mN·m·s
58 let angular_momentum_micro = AngularMomentum::from_micro_nms(1000000.0); // 1000000 μN·m·s
59 let angular_momentum_nano = AngularMomentum::from_nano_nms(1000000000.0); // 1000000000 nN·m·s
60
61 println!(" 100 N·m·s = {} kg·m²/s", angular_momentum_nms.as_kg_m2_per_second());
62 println!(" 1000 mN·m·s = {} kg·m²/s", angular_momentum_mill.as_kg_m2_per_second());
63 println!(" 1000000 μN·m·s = {} kg·m²/s", angular_momentum_micro.as_kg_m2_per_second());
64 println!(" 1000000000 nN·m·s = {} kg·m²/s", angular_momentum_nano.as_kg_m2_per_second());
65 println!(" 验证: 100 = 1 = 0.001 = 0.000001 ✓\n");
66
67 // 示例7: 不同Nms单位之间的运算
68 println!("7. 不同Nms单位之间的运算");
69 let sum = angular_momentum_nms + angular_momentum_mill + angular_momentum_micro + angular_momentum_nano;
70 println!(" 100 N·m·s + 1000 mN·m·s + 1000000 μN·m·s + 1000000000 nN·m·s = {} N·m·s", sum.as_nms());
71 println!(" 验证: 100 + 1 + 0.001 + 0.000001 = 101.001001 ✓\n");
72
73 // 示例8: Nms单位与角速度的运算
74 println!("8. Nms单位与角速度的运算");
75 let omega = AngularVelocity::from_rad_per_second(2.0); // 2 rad/s
76 let torque_from_nms = angular_momentum_nms * omega;
77 println!(" 100 N·m·s × 2 rad/s = {} N·m", torque_from_nms.as_nm());
78 println!(" 验证: 100 × 2 = 200 ✓\n");
79
80 println!("=== 物理意义说明 ===");
81 println!("• 角动量 (L) = 转动惯量 (I) × 角速度 (ω)");
82 println!("• 力矩 (τ) = 角动量 (L) × 角速度 (ω)");
83 println!("• 在旋转动力学中,这些关系非常重要");
84 println!("• 所有运算都支持不同单位之间的自动转换");
85 println!("• 新增的Nms单位:N·m·s, mN·m·s, μN·m·s, nN·m·s");
86 println!("• 1 N·m·s = 1 kg·m²/s(数值相等)");
87}pub fn as_mill_nms(&self) -> f64
pub fn as_micro_nms(&self) -> f64
pub fn as_nano_nms(&self) -> f64
Trait Implementations§
Source§impl Add for AngularMomentum
impl Add for AngularMomentum
Source§impl<'a> Add<&'a AngularMomentum> for AngularMomentum
impl<'a> Add<&'a AngularMomentum> for AngularMomentum
Source§type Output = AngularMomentum
type Output = AngularMomentum
The resulting type after applying the
+ operator.Source§impl<'a, 'b> Add<&'b AngularMomentum> for &'a AngularMomentum
impl<'a, 'b> Add<&'b AngularMomentum> for &'a AngularMomentum
Source§type Output = AngularMomentum
type Output = AngularMomentum
The resulting type after applying the
+ operator.Source§impl<'a> Add<AngularMomentum> for &'a AngularMomentum
impl<'a> Add<AngularMomentum> for &'a AngularMomentum
Source§type Output = AngularMomentum
type Output = AngularMomentum
The resulting type after applying the
+ operator.Source§impl Add<f64> for AngularMomentum
impl Add<f64> for AngularMomentum
Source§impl Clone for AngularMomentum
impl Clone for AngularMomentum
impl Copy for AngularMomentum
Source§impl Debug for AngularMomentum
impl Debug for AngularMomentum
Source§impl Default for AngularMomentum
impl Default for AngularMomentum
Source§impl Display for AngularMomentum
impl Display for AngularMomentum
Source§impl Div for AngularMomentum
impl Div for AngularMomentum
Source§impl<'a> Div<&'a AngularVelocity> for AngularMomentum
impl<'a> Div<&'a AngularVelocity> for AngularMomentum
Source§impl<'a> Div<&'a Inertia> for AngularMomentum
impl<'a> Div<&'a Inertia> for AngularMomentum
Source§impl<'a, 'b> Div<&'b AngularVelocity> for &'a AngularMomentum
impl<'a, 'b> Div<&'b AngularVelocity> for &'a AngularMomentum
Source§impl<'a, 'b> Div<&'b Inertia> for &'a AngularMomentum
impl<'a, 'b> Div<&'b Inertia> for &'a AngularMomentum
Source§impl Div<AngularMomentum> for f64
impl Div<AngularMomentum> for f64
Source§type Output = AngularMomentum
type Output = AngularMomentum
The resulting type after applying the
/ operator.Source§impl Div<AngularVelocity> for AngularMomentum
impl Div<AngularVelocity> for AngularMomentum
Source§impl<'a> Div<AngularVelocity> for &'a AngularMomentum
impl<'a> Div<AngularVelocity> for &'a AngularMomentum
Source§impl Div<Coef> for AngularMomentum
impl Div<Coef> for AngularMomentum
Source§impl Div<Inertia> for AngularMomentum
impl Div<Inertia> for AngularMomentum
Source§impl<'a> Div<Inertia> for &'a AngularMomentum
impl<'a> Div<Inertia> for &'a AngularMomentum
Source§impl Div<f64> for AngularMomentum
impl Div<f64> for AngularMomentum
Source§impl<'a> Mul<&'a AngularVelocity> for AngularMomentum
impl<'a> Mul<&'a AngularVelocity> for AngularMomentum
Source§impl<'a, 'b> Mul<&'b AngularVelocity> for &'a AngularMomentum
impl<'a, 'b> Mul<&'b AngularVelocity> for &'a AngularMomentum
Source§impl Mul<AngularMomentum> for f64
impl Mul<AngularMomentum> for f64
Source§type Output = AngularMomentum
type Output = AngularMomentum
The resulting type after applying the
* operator.Source§impl Mul<AngularMomentum> for AngularVelocity
impl Mul<AngularMomentum> for AngularVelocity
Source§impl Mul<AngularMomentum> for Coef
impl Mul<AngularMomentum> for Coef
Source§type Output = AngularMomentum
type Output = AngularMomentum
The resulting type after applying the
* operator.Source§impl Mul<AngularVelocity> for AngularMomentum
impl Mul<AngularVelocity> for AngularMomentum
Source§impl<'a> Mul<AngularVelocity> for &'a AngularMomentum
impl<'a> Mul<AngularVelocity> for &'a AngularMomentum
Source§impl Mul<Coef> for AngularMomentum
impl Mul<Coef> for AngularMomentum
Source§impl Mul<f64> for AngularMomentum
impl Mul<f64> for AngularMomentum
Source§impl Neg for AngularMomentum
impl Neg for AngularMomentum
impl NonCoefficient for AngularMomentum
Source§impl PartialEq for AngularMomentum
impl PartialEq for AngularMomentum
Source§impl PhysicalQuantity for AngularMomentum
impl PhysicalQuantity for AngularMomentum
impl StructuralPartialEq for AngularMomentum
Source§impl Sub for AngularMomentum
impl Sub for AngularMomentum
Source§impl<'a> Sub<&'a AngularMomentum> for AngularMomentum
impl<'a> Sub<&'a AngularMomentum> for AngularMomentum
Source§type Output = AngularMomentum
type Output = AngularMomentum
The resulting type after applying the
- operator.Source§impl<'a, 'b> Sub<&'b AngularMomentum> for &'a AngularMomentum
impl<'a, 'b> Sub<&'b AngularMomentum> for &'a AngularMomentum
Source§type Output = AngularMomentum
type Output = AngularMomentum
The resulting type after applying the
- operator.Source§impl<'a> Sub<AngularMomentum> for &'a AngularMomentum
impl<'a> Sub<AngularMomentum> for &'a AngularMomentum
Source§type Output = AngularMomentum
type Output = AngularMomentum
The resulting type after applying the
- operator.Source§impl Sub<f64> for AngularMomentum
impl Sub<f64> for AngularMomentum
impl VectorQuantity for AngularMomentum
Auto Trait Implementations§
impl Freeze for AngularMomentum
impl RefUnwindSafe for AngularMomentum
impl Send for AngularMomentum
impl Sync for AngularMomentum
impl Unpin for AngularMomentum
impl UnsafeUnpin for AngularMomentum
impl UnwindSafe for AngularMomentum
Blanket Implementations§
Source§impl<T> BorrowMut<T> for Twhere
T: ?Sized,
impl<T> BorrowMut<T> for Twhere
T: ?Sized,
Source§fn borrow_mut(&mut self) -> &mut T
fn borrow_mut(&mut self) -> &mut T
Mutably borrows from an owned value. Read more