1use openmaths::Vector3;
2
3fn main() {
4 let mut v1 = Vector3::new(1.0, 2.0, 3.0);
6 let v2 = Vector3::new(4.0, 5.0, 6.0);
7
8 v1.add(&v2);
10 println!("1. Elements of v1 after addition: ({}, {}, {})", v1.x, v1.y, v1.z);
11
12 let mut v3 = Vector3::new(1.0, 3.0, 2.0);
14 v3.add_scalar(2.0);
15 println!("2. Adding a Scalar to v3, new elements: ({}, {}, {})", v3.x, v3.y, v3.z);
16
17 let mut v4 = Vector3::new(10.0, 9.0, 8.0);
19 v4.subtract(&v2);
20 println!("3. Elements of v4 after subtraction: ({}, {}, {})", v4.x, v4.y, v4.z);
21
22 let mut v5 = Vector3::new(5.0, 6.0, 7.0);
24 v5.subtract_scalar(3.0);
25 println!("4. Subtracting a Scalar from v5, new elements: ({}, {}, {})", v5.x, v5.y, v5.z);
26
27 let v6 = v1.clone();
29 println!("5. Cloned Vector3 v6: ({}, {}, {})", v6.x, v6.y, v6.z);
30
31 let mut v7 = Vector3::new(8.0, 9.0, 10.0);
33 v7.zero();
34 println!("6. Zeroed Vector3 v7: ({}, {}, {})", v7.x, v7.y, v7.z);
35
36 let mut v8 = Vector3::new(2.0, 3.0, 4.0);
38 v8.copy(&v6);
39 println!("7. Copied Vector3 v8 from v6: ({}, {}, {})", v8.x, v8.y, v8.z);
40
41 let mut v9 = Vector3::new(1.0, 2.0, 3.0);
43 v9.multiply_scalar(2.0);
44 println!("8. v9 after multiplying by scalar: ({}, {}, {})", v9.x, v9.y, v9.z);
45
46 let v10 = Vector3::new(2.0, 3.0, 4.0);
48 let v11 = Vector3::new(5.0, 6.0, 7.0);
49 let mut v12 = v10.clone();
50 v12.multiply(&v11);
51 println!("9. v12 after multiplying v10 and v11: ({}, {}, {})", v12.x, v12.y, v12.z);
52
53 let mut v13 = Vector3::new(10.0, 20.0, 30.0);
55 v13.divide_scalar(2.0);
56 println!("10. v13 after dividing by scalar: ({}, {}, {})", v13.x, v13.y, v13.z);
57
58 let mut v14 = Vector3::new(20.0, 30.0, 40.0);
60 let v15 = Vector3::new(2.0, 3.0, 4.0);
61 v14.divide(&v15);
62 println!("11. v14 after dividing by v15: ({}, {}, {})", v14.x, v14.y, v14.z);
63
64 let mut v16 = Vector3::new(1.0, -2.0, 3.0);
66 v16.negate();
67 println!("12. v16 after negation: ({}, {}, {})", v16.x, v16.y, v16.z);
68
69 let v17 = Vector3::new(1.0, 2.0, 3.0);
71 let v18 = Vector3::new(4.0, 5.0, 6.0);
72 let dot_product = v17.dot(&v18);
73 println!("13. Dot product of v17 and v18: {}", dot_product);
74
75 let v19 = Vector3::new(3.0, 4.0, 0.0);
77 let magnitude = v19.magnitude();
78 println!("14. Magnitude/Length of v19: {}", magnitude);
79
80 let mut v20 = Vector3::new(3.0, 4.0, 0.0);
82 v20.normalize();
83 println!("15. Normalized v20: ({}, {}, {})", v20.x, v20.y, v20.z);
84
85 let v21 = Vector3::new(1.0, 0.0, 0.0);
87 let v22 = Vector3::new(0.0, 1.0, 0.0);
88 let v23 = v21.cross(&v22);
89 println!("16. Cross product of v21 and v22: ({}, {}, {})", v23.x, v23.y, v23.z);
90
91 let v24 = Vector3::new(1.0, 2.0, 3.0);
93 let v25 = Vector3::new(4.0, 5.0, 6.0);
94 let distance = v24.distance(&v25);
95 println!("17. Distance between v24 and v25: {}", distance);
96
97 let mut v26 = Vector3::new(1.0, 2.0, 3.0);
99 let matrix = openmaths::Matrix4::set(
100 1.0, 0.0, 0.0, 2.0,
101 0.0, 1.0, 0.0, 5.0,
102 0.0, 0.0, 1.0, 0.0,
103 0.0, 0.0, 0.0, 1.0
104 );
105 v26.apply_matrix4(matrix);
106 println!("18. v26 after applying transformation matrix: ({}, {}, {})", v26.x, v26.y, v26.z);
107}