Merge pull request #392 from duarm/master

aabb2d_zero, aabb2d_diagonal and aabb2d_size
This commit is contained in:
Recep Aslantas
2024-02-24 05:58:49 +03:00
committed by GitHub
4 changed files with 83 additions and 9 deletions

View File

@@ -17,16 +17,22 @@ convert it before and after calling a cglm aabb2d function.
Table of contents (click to go): Table of contents (click to go):
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
Macros:
1. :c:func:`glm_aabb2d_size`
Functions: Functions:
1. :c:func:`glm_aabb2d_copy` 1. :c:func:`glm_aabb2d_copy`
#. :c:func:`glm_aabb2d_zero`
#. :c:func:`glm_aabb2d_transform` #. :c:func:`glm_aabb2d_transform`
#. :c:func:`glm_aabb2d_merge` #. :c:func:`glm_aabb2d_merge`
#. :c:func:`glm_aabb2d_crop` #. :c:func:`glm_aabb2d_crop`
#. :c:func:`glm_aabb2d_crop_until` #. :c:func:`glm_aabb2d_crop_until`
#. :c:func:`glm_aabb2d_invalidate` #. :c:func:`glm_aabb2d_invalidate`
#. :c:func:`glm_aabb2d_isvalid` #. :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_radius`
#. :c:func:`glm_aabb2d_center` #. :c:func:`glm_aabb2d_center`
#. :c:func:`glm_aabb2d_aabb` #. :c:func:`glm_aabb2d_aabb`
@@ -45,6 +51,13 @@ Functions documentation
| *[in]* **aabb** bounding box | *[in]* **aabb** bounding box
| *[out]* **dest** destination | *[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]) .. c:function:: void glm_aabb2d_transform(vec2 aabb[2], mat3 m, vec2 dest[2])
| apply transform to Axis-Aligned Bounding Box | apply transform to Axis-Aligned Bounding Box
@@ -111,9 +124,9 @@ Functions documentation
Returns: Returns:
returns true if aabb is valid otherwise false 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: Parameters:
| *[in]* **aabb** bounding box | *[in]* **aabb** bounding box
@@ -121,6 +134,18 @@ Functions documentation
Returns: Returns:
distance between min - max 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]) .. c:function:: float glm_aabb2d_radius(vec2 aabb[2])
| radius of sphere which surrounds AABB | radius of sphere which surrounds AABB

View File

@@ -10,9 +10,23 @@
#include "common.h" #include "common.h"
#include "vec2.h" #include "vec2.h"
#include "vec4.h"
#include "util.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] * @brief copy all members of [aabb] to [dest]
* *
@@ -152,10 +166,22 @@ glm_aabb2d_isvalid(vec2 aabb[2]) {
*/ */
CGLM_INLINE CGLM_INLINE
float float
glm_aabb2d_size(vec2 aabb[2]) { glm_aabb2d_diag(vec2 aabb[2]) {
return glm_vec2_distance(aabb[0], aabb[1]); 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 * @brief radius of sphere which surrounds AABB
* *
@@ -164,7 +190,7 @@ glm_aabb2d_size(vec2 aabb[2]) {
CGLM_INLINE CGLM_INLINE
float float
glm_aabb2d_radius(vec2 aabb[2]) { glm_aabb2d_radius(vec2 aabb[2]) {
return glm_aabb2d_size(aabb) * 0.5f; return glm_aabb2d_diag(aabb) * 0.5f;
} }
/*! /*!

View File

@@ -13,6 +13,10 @@ extern "C" {
#include "../cglm.h" #include "../cglm.h"
CGLM_EXPORT
void
glmc_aabb2d_zero(vec2 aabb[2]);
CGLM_EXPORT CGLM_EXPORT
void void
glmc_aabb2d_copy(vec2 aabb[2], vec2 dest[2]); glmc_aabb2d_copy(vec2 aabb[2], vec2 dest[2]);
@@ -46,7 +50,11 @@ glmc_aabb2d_isvalid(vec2 aabb[2]);
CGLM_EXPORT CGLM_EXPORT
float 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 CGLM_EXPORT
float float

View File

@@ -8,6 +8,15 @@
#include "../include/cglm/cglm.h" #include "../include/cglm/cglm.h"
#include "../include/cglm/call.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 CGLM_EXPORT
void void
glmc_aabb2d_copy(vec2 aabb[2], vec2 dest[2]) { glmc_aabb2d_copy(vec2 aabb[2], vec2 dest[2]) {
@@ -55,8 +64,14 @@ glmc_aabb2d_isvalid(vec2 aabb[2]) {
CGLM_EXPORT CGLM_EXPORT
float float
glmc_aabb2d_size(vec2 aabb[2]) { glmc_aabb2d_diag(vec2 aabb[2]) {
return glm_aabb2d_size(aabb); return glm_aabb2d_diag(aabb);
}
CGLM_EXPORT
void
glmc_aabb2d_sizev(vec2 aabb[2], vec2 dest) {
glm_aabb2d_sizev(aabb, dest);
} }
CGLM_EXPORT CGLM_EXPORT