From 047ed259ae798547f8821214adfdf21be96baeb0 Mon Sep 17 00:00:00 2001 From: Recep Aslantas Date: Tue, 4 Jun 2019 19:03:31 +0300 Subject: [PATCH] vec2: distance implementation --- include/cglm/call/vec2.h | 27 +++++++++++++++++---------- include/cglm/vec2.h | 26 ++++++++++++++++++++++++++ 2 files changed, 43 insertions(+), 10 deletions(-) diff --git a/include/cglm/call/vec2.h b/include/cglm/call/vec2.h index acf7f41..de59437 100644 --- a/include/cglm/call/vec2.h +++ b/include/cglm/call/vec2.h @@ -1,13 +1,20 @@ -// -// vec2.h -// glm -// -// Created by Recep Aslantas on 3/31/19. -// Copyright © 2019 Recep Aslantas. All rights reserved. -// +/* + * Copyright (c), Recep Aslantas. + * + * MIT License (MIT), http://opensource.org/licenses/MIT + * Full license can be found in the LICENSE file + */ -#ifndef vec2_h -#define vec2_h +#ifndef cglmc_vec2_h +#define cglmc_vec2_h +#ifdef __cplusplus +extern "C" { +#endif + +#include "../cglm.h" -#endif /* vec2_h */ +#ifdef __cplusplus +} +#endif +#endif /* cglmc_vec2_h */ diff --git a/include/cglm/vec2.h b/include/cglm/vec2.h index 9bf8749..06817e4 100644 --- a/include/cglm/vec2.h +++ b/include/cglm/vec2.h @@ -432,6 +432,32 @@ glm_vec2_normalize_to(vec2 vec, vec2 dest) { glm_vec2_scale(vec, 1.0f / norm, dest); } +/** + * @brief squared distance between two vectors + * + * @param[in] a vector1 + * @param[in] b vector2 + * @return returns squared distance (distance * distance) + */ +CGLM_INLINE +float +glm_vec2_distance2(vec2 a, vec2 b) { + return glm_pow2(b[0] - a[0]) + glm_pow2(b[1] - a[1]); +} + +/** + * @brief distance between two vectors + * + * @param[in] a vector1 + * @param[in] b vector2 + * @return returns distance + */ +CGLM_INLINE +float +glm_vec2_distance(vec2 a, vec2 b) { + return sqrtf(glm_vec2_distance2(a, b)); +} + /*! * @brief max values of vectors *