From d5cc97b1d38ef7a54a7c1b58efd93d3d9eb371c5 Mon Sep 17 00:00:00 2001 From: Vito Caputo Date: Mon, 6 May 2019 22:19:05 -0700 Subject: v2f: add distance: v2f_distance() v2f_distance_sq() variant omits the sqrtf(), which is often a possible optimization when e.g. comparing distances; just operate uniformly with squares of the distances and you can skip the expensive square roots. --- v2f.h | 14 ++++++++++++++ 1 file changed, 14 insertions(+) (limited to 'v2f.h') diff --git a/v2f.h b/v2f.h index 9fd3b3f..4cbabd4 100644 --- a/v2f.h +++ b/v2f.h @@ -157,6 +157,20 @@ static inline float v2f_length(const v2f_t *v) } +static inline float v2f_distance(const v2f_t *a, const v2f_t *b) +{ + return v2f_length(v2f_sub(&(v2f_t){}, a, b)); +} + + +static inline float v2f_distance_sq(const v2f_t *a, const v2f_t *b) +{ + v2f_t d = _v2f_sub(a, b); + + return v2f_dot(&d, &d); +} + + static inline v2f_t _v2f_normalize(const v2f_t *v) { return _v2f_mult_scalar(v, 1.0f / v2f_length(v)); -- cgit v1.2.3