#import "math.sx"; vec3_dot :: (a: Vector(3,f32), b: Vector(3,f32)) -> f32 { return a.x*b.x + a.y*b.y + a.z*b.z; } dot :: ufcs vec3_dot; vec3_cross :: (a: Vector(3,f32), b: Vector(3,f32)) -> Vector(3,f32) { .[a.y*b.z - a.z*b.y, a.z*b.x - a.x*b.z, a.x*b.y - a.y*b.x]; } cross :: ufcs vec3_cross; vec3_length :: (v: Vector(3,f32)) -> f32 { return sqrt(dot(v, v)); } length :: ufcs vec3_length; vec3_normal :: (v: Vector(3,f32)) -> Vector(3,f32) { return v / length(v); } normal :: ufcs vec3_normal;