UnixJunkie / vector3

module for 3D vectors (implemented as a record of x, y and z floats)
6 stars 0 forks source link

dist can be significantly faster #11

Open UnixJunkie opened 1 year ago

UnixJunkie commented 1 year ago
let dist u v =
  sqrt (
    (* dx2 *)
    (u.x -. v.x) *.
    (u.x -. v.x)
    +. (* dy2 *)
    (u.y -. v.y) *.
    (u.y -. v.y)
    +. (* dz2 *)
    (u.z -. v.z) *.
    (u.z -. v.z)
  )
UnixJunkie commented 5 months ago
let dist2 u v =
  let dx = u.x -. v.x in
  let dy = u.y -. v.y in
  let dz = u.z -. v.z in
  dx *. dx +. dy *. dy +. dz *. dz
[@@inline]

(* the one in library vector3 should be optimized *)
let dist u v =
  sqrt (dist2 u v)
[@@inline]