mesh_rand/
vecmath.rs

1pub(crate) type Vector = [f32; 3];
2
3pub(crate) fn div(vec: Vector, num: f32) -> Vector {
4    vec.map(|v| v / num)
5}
6
7pub(crate) fn len_sq([a, b, c]: Vector) -> f32 {
8    a * a + b * b + c * c
9}
10
11pub(crate) fn len(vec: Vector) -> f32 {
12    len_sq(vec).sqrt()
13}
14
15pub(crate) fn diff([v1, v2, v3]: Vector, [u1, u2, u3]: Vector) -> Vector {
16    [v1 - u1, v2 - u2, v3 - u3]
17}
18
19pub(crate) fn cross([a1, a2, a3]: Vector, [b1, b2, b3]: Vector) -> Vector {
20    [a2 * b3 - a3 * b2, a3 * b1 - a1 * b3, a1 * b2 - a2 * b1]
21}
22
23pub(crate) fn add([u1, u2, u3]: Vector, [v1, v2, v3]: Vector) -> Vector {
24    [u1 + v1, u2 + v2, u3 + v3]
25}
26
27pub(crate) fn mul(v: Vector, factor: f32) -> Vector {
28    v.map(|v| v * factor)
29}