diff --git a/docs/source/aabb2d.rst b/docs/source/aabb2d.rst index 26de1b8..ec6bd42 100644 --- a/docs/source/aabb2d.rst +++ b/docs/source/aabb2d.rst @@ -17,16 +17,22 @@ convert it before and after calling a cglm aabb2d function. Table of contents (click to go): ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ +Macros: + +1. :c:func:`glm_aabb2d_size` + Functions: 1. :c:func:`glm_aabb2d_copy` +#. :c:func:`glm_aabb2d_zero` #. :c:func:`glm_aabb2d_transform` #. :c:func:`glm_aabb2d_merge` #. :c:func:`glm_aabb2d_crop` #. :c:func:`glm_aabb2d_crop_until` #. :c:func:`glm_aabb2d_invalidate` #. :c:func:`glm_aabb2d_isvalid` -#. :c:func:`glm_aabb2d_size` +#. :c:func:`glm_aabb2d_diag` +#. :c:func:`glm_aabb2d_sizev` #. :c:func:`glm_aabb2d_radius` #. :c:func:`glm_aabb2d_center` #. :c:func:`glm_aabb2d_aabb` @@ -45,6 +51,13 @@ Functions documentation | *[in]* **aabb** bounding box | *[out]* **dest** destination +.. c:function:: void glm_aabb2d_zero(vec2 aabb[2]) + + | makes all members of [aabb] 0.0f (zero) + + Parameters: + | *[in, out]* **aabb** bounding box + .. c:function:: void glm_aabb2d_transform(vec2 aabb[2], mat3 m, vec2 dest[2]) | apply transform to Axis-Aligned Bounding Box @@ -111,9 +124,9 @@ Functions documentation Returns: returns true if aabb is valid otherwise false -.. c:function:: float glm_aabb2d_size(vec2 aabb[2]) +.. c:function:: float glm_aabb2d_diag(vec2 aabb[2]) - | distance between of min and max + | distance between min and max Parameters: | *[in]* **aabb** bounding box @@ -121,6 +134,18 @@ Functions documentation Returns: distance between min - max + +.. c:function:: void glm_aabb2d_sizev(vec2 aabb[2], vec2 dest) + + | size vector of aabb + + Parameters: + | *[in]* **aabb** bounding box + | *[out]* **dest** size vector + + Returns: + size vector of aabb max - min + .. c:function:: float glm_aabb2d_radius(vec2 aabb[2]) | radius of sphere which surrounds AABB diff --git a/include/cglm/aabb2d.h b/include/cglm/aabb2d.h index 94a1d44..8693ac0 100644 --- a/include/cglm/aabb2d.h +++ b/include/cglm/aabb2d.h @@ -10,9 +10,23 @@ #include "common.h" #include "vec2.h" -#include "vec4.h" #include "util.h" +/* DEPRECATED! use _diag */ +#define glm_aabb2d_size(aabb) glm_aabb2d_diag(aabb) + +/*! + * @brief make [aabb] zero + * + * @param[in, out] aabb + */ +CGLM_INLINE +void +glm_aabb2d_zero(vec2 aabb[2]) { + glm_vec2_zero(aabb[0]); + glm_vec2_zero(aabb[1]); +} + /*! * @brief copy all members of [aabb] to [dest] * @@ -152,10 +166,22 @@ glm_aabb2d_isvalid(vec2 aabb[2]) { */ CGLM_INLINE float -glm_aabb2d_size(vec2 aabb[2]) { +glm_aabb2d_diag(vec2 aabb[2]) { return glm_vec2_distance(aabb[0], aabb[1]); } +/*! + * @brief size of aabb + * + * @param[in] aabb bounding aabb + * @param[out] dest size + */ +CGLM_INLINE +void +glm_aabb2d_sizev(vec2 aabb[2], vec2 dest) { + glm_vec2_sub(aabb[1], aabb[0], dest); +} + /*! * @brief radius of sphere which surrounds AABB * @@ -164,7 +190,7 @@ glm_aabb2d_size(vec2 aabb[2]) { CGLM_INLINE float glm_aabb2d_radius(vec2 aabb[2]) { - return glm_aabb2d_size(aabb) * 0.5f; + return glm_aabb2d_diag(aabb) * 0.5f; } /*! diff --git a/include/cglm/call/aabb2d.h b/include/cglm/call/aabb2d.h index 3cc0593..d35a36b 100644 --- a/include/cglm/call/aabb2d.h +++ b/include/cglm/call/aabb2d.h @@ -13,6 +13,10 @@ extern "C" { #include "../cglm.h" +CGLM_EXPORT +void +glmc_aabb2d_zero(vec2 aabb[2]); + CGLM_EXPORT void glmc_aabb2d_copy(vec2 aabb[2], vec2 dest[2]); @@ -46,7 +50,11 @@ glmc_aabb2d_isvalid(vec2 aabb[2]); CGLM_EXPORT float -glmc_aabb2d_size(vec2 aabb[2]); +glmc_aabb2d_diag(vec2 aabb[2]); + +CGLM_EXPORT +void +glmc_aabb2d_sizev(vec2 aabb[2], vec2 dest); CGLM_EXPORT float diff --git a/src/aabb2d.c b/src/aabb2d.c index 80a3ee0..2e3a3c2 100644 --- a/src/aabb2d.c +++ b/src/aabb2d.c @@ -8,6 +8,15 @@ #include "../include/cglm/cglm.h" #include "../include/cglm/call.h" +/* DEPRECATED! use _diag */ +#define glmc_aabb2d_size(aabb) glmc_aabb2d_diag(aabb) + +CGLM_EXPORT +void +glmc_aabb2d_zero(vec2 aabb[2]) { + glm_aabb2d_zero(aabb); +} + CGLM_EXPORT void glmc_aabb2d_copy(vec2 aabb[2], vec2 dest[2]) { @@ -55,8 +64,14 @@ glmc_aabb2d_isvalid(vec2 aabb[2]) { CGLM_EXPORT float -glmc_aabb2d_size(vec2 aabb[2]) { - return glm_aabb2d_size(aabb); +glmc_aabb2d_diag(vec2 aabb[2]) { + return glm_aabb2d_diag(aabb); +} + +CGLM_EXPORT +void +glmc_aabb2d_sizev(vec2 aabb[2], vec2 dest) { + glm_aabb2d_sizev(aabb, dest); } CGLM_EXPORT