pub const Vec = @Vector(3, f32); pub fn init(x: f32, y: f32, z: f32) Vec { return @Vector(3, f32){ x, y, z }; } pub fn scalar(x: f32) Vec { return @splat(3, x); } pub fn unitVec(v: Vec) Vec { return v / scalar(length(v)); } pub fn lengthSquared(v: Vec) f32 { return v[0] * v[0] + v[1] * v[1] + v[2] * v[2]; } pub fn length(v: Vec) f32 { return @sqrt(lengthSquared(v)); } pub fn dot(x: Vec, y: Vec) f32 { return x[0] * y[0] + x[1] * y[1] + x[2] * y[2]; }