3D vectors for astrodynamics and rendering
0
fork

Configure Feed

Select the types of activity you want to include in your feed.

Upgrade to ocamlformat 0.29.0; fix csvt/sexpt streaming; reformat

- Update .ocamlformat to 0.29.0 across all 591 files
- csvt: reuse single Buffer.t for field reads (no alloc per field)
- sexpt: Obj members decoded from stream into Dict, typed Variant GADT
- Reformat all source files for 0.29.0

+9 -9
+9 -9
lib/vec3.ml
··· 2 2 3 3 let v x y z = { x; y; z } 4 4 let zero = { x = 0.; y = 0.; z = 0. } 5 - let add a b = { x = a.x +. b.x; y = a.y +. b.y; z = a.z +. b.z } 6 - let sub a b = { x = a.x -. b.x; y = a.y -. b.y; z = a.z -. b.z } 7 - let scale s v = { x = s *. v.x; y = s *. v.y; z = s *. v.z } 8 - let dot a b = (a.x *. b.x) +. (a.y *. b.y) +. (a.z *. b.z) 5 + let[@inline] add a b = { x = a.x +. b.x; y = a.y +. b.y; z = a.z +. b.z } 6 + let[@inline] sub a b = { x = a.x -. b.x; y = a.y -. b.y; z = a.z -. b.z } 7 + let[@inline] scale s v = { x = s *. v.x; y = s *. v.y; z = s *. v.z } 8 + let[@inline] dot a b = (a.x *. b.x) +. (a.y *. b.y) +. (a.z *. b.z) 9 9 10 - let cross a b = 10 + let[@inline] cross a b = 11 11 { 12 12 x = (a.y *. b.z) -. (a.z *. b.y); 13 13 y = (a.z *. b.x) -. (a.x *. b.z); 14 14 z = (a.x *. b.y) -. (a.y *. b.x); 15 15 } 16 16 17 - let length v = sqrt (dot v v) 17 + let[@inline] length v = sqrt (dot v v) 18 18 19 - let normalize v = 19 + let[@inline] normalize v = 20 20 let l = length v in 21 21 if l < 1e-12 then zero else scale (1. /. l) v 22 22 23 - let negate v = { x = -.v.x; y = -.v.y; z = -.v.z } 24 - let distance a b = length (sub a b) 23 + let[@inline] negate v = { x = -.v.x; y = -.v.y; z = -.v.z } 24 + let[@inline] distance a b = length (sub a b) 25 25 26 26 let equal ?(eps = 1e-12) a b = 27 27 Float.abs (a.x -. b.x) <= eps