Merge pull request #350 from duarm/vec2_center

adding glm_vec2_center
This commit is contained in:
Recep Aslantas
2023-10-15 00:17:47 +03:00
committed by GitHub
7 changed files with 66 additions and 0 deletions

View File

@@ -45,6 +45,7 @@ Functions:
#. :c:func:`glm_vec2_normalize`
#. :c:func:`glm_vec2_normalize_to`
#. :c:func:`glm_vec2_rotate`
#. :c:func:`glm_vec2_center`
#. :c:func:`glm_vec2_distance2`
#. :c:func:`glm_vec2_distance`
#. :c:func:`glm_vec2_maxv`
@@ -314,6 +315,15 @@ Functions documentation
| *[in]* **axis** axis vector
| *[out]* **dest** destination
.. c:function:: void glm_vec2_center(vec2 v1, vec2 v2, vec2 dest)
find center point of two vector
Parameters:
| *[in]* **v1** vector1
| *[in]* **v2** vector2
| *[out]* **dest** center point
.. c:function:: float glm_vec2_distance2(vec2 v1, vec2 v2)
squared distance between two vectors

View File

@@ -125,6 +125,10 @@ CGLM_EXPORT
void
glmc_vec2_rotate(vec2 v, float angle, vec2 dest);
CGLM_EXPORT
void
glmc_vec2_center(vec2 a, vec2 b, vec2 dest);
CGLM_EXPORT
float
glmc_vec2_distance2(vec2 a, vec2 b);

View File

@@ -40,6 +40,7 @@
CGLM_INLINE vec2s glms_vec2_negate(vec2s v)
CGLM_INLINE vec2s glms_vec2_normalize(vec2s v)
CGLM_INLINE vec2s glms_vec2_rotate(vec2s v, float angle, vec2s axis)
CGLM_INLINE vec2s glms_vec2_center(vec2s a, vec2s b)
CGLM_INLINE float glms_vec2_distance(vec2s a, vec2s b)
CGLM_INLINE float glms_vec2_distance2(vec2s a, vec2s b)
CGLM_INLINE vec2s glms_vec2_maxv(vec2s a, vec2s b)
@@ -470,6 +471,21 @@ glms_vec2_(rotate)(vec2s v, float angle) {
return r;
}
/**
* @brief find center point of two vector
*
* @param[in] a vector1
* @param[in] b vector2
* @returns center point
*/
CGLM_INLINE
vec2s
glms_vec2_(center)(vec2s a, vec2s b) {
vec2s r;
glm_vec2_center(a.raw, b.raw, r.raw);
return r;
}
/**
* @brief distance between two vectors
*

View File

@@ -41,6 +41,7 @@
CGLM_INLINE void glm_vec2_normalize(vec2 v)
CGLM_INLINE void glm_vec2_normalize_to(vec2 vec, vec2 dest)
CGLM_INLINE void glm_vec2_rotate(vec2 v, float angle, vec2 dest)
CGLM_INLINE void glm_vec2_center(vec2 a, vec2 b, vec2 dest)
CGLM_INLINE float glm_vec2_distance2(vec2 a, vec2 b)
CGLM_INLINE float glm_vec2_distance(vec2 a, vec2 b)
CGLM_INLINE void glm_vec2_maxv(vec2 v1, vec2 v2, vec2 dest)
@@ -493,6 +494,20 @@ glm_vec2_rotate(vec2 v, float angle, vec2 dest) {
dest[1] = s * x1 + c * y1;
}
/**
* @brief find center point of two vector
*
* @param[in] a vector1
* @param[in] b vector2
* @param[out] dest center point
*/
CGLM_INLINE
void
glm_vec2_center(vec2 a, vec2 b, vec2 dest) {
glm_vec2_add(a, b, dest);
glm_vec2_scale(dest, 0.5f, dest);
}
/**
* @brief squared distance between two vectors
*

View File

@@ -194,6 +194,12 @@ glmc_vec2_rotate(vec2 v, float angle, vec2 dest) {
glm_vec2_rotate(v, angle, dest);
}
CGLM_EXPORT
void
glmc_vec2_center(vec2 a, vec2 b, vec2 dest) {
glm_vec2_center(a, b, dest);
}
CGLM_EXPORT
float
glmc_vec2_distance2(vec2 a, vec2 b) {

View File

@@ -480,6 +480,17 @@ TEST_IMPL(GLM_PREFIX, vec2_rotate) {
TEST_SUCCESS
}
TEST_IMPL(GLM_PREFIX, vec2_center) {
vec2 v1 = {1.0f, 1.0f},
v2 = {0.0f, 0.0f};
vec2 dest;
GLM(vec2_center)(v1, v2, dest);
ASSERTIFY(test_assert_vec2_eq(dest, (vec2){ 0.5f, 0.5f }))
TEST_SUCCESS
}
TEST_IMPL(GLM_PREFIX, vec2_distance2) {
vec2 v1 = {30.0f, 0.0f},
v2 = {0.0f, 0.0f},

View File

@@ -485,6 +485,7 @@ TEST_DECLARE(glm_vec2_negate)
TEST_DECLARE(glm_vec2_normalize)
TEST_DECLARE(glm_vec2_normalize_to)
TEST_DECLARE(glm_vec2_rotate)
TEST_DECLARE(glm_vec2_center)
TEST_DECLARE(glm_vec2_distance2)
TEST_DECLARE(glm_vec2_distance)
TEST_DECLARE(glm_vec2_maxv)
@@ -524,6 +525,7 @@ TEST_DECLARE(glmc_vec2_negate)
TEST_DECLARE(glmc_vec2_normalize)
TEST_DECLARE(glmc_vec2_normalize_to)
TEST_DECLARE(glmc_vec2_rotate)
TEST_DECLARE(glmc_vec2_center)
TEST_DECLARE(glmc_vec2_distance2)
TEST_DECLARE(glmc_vec2_distance)
TEST_DECLARE(glmc_vec2_maxv)
@@ -1460,6 +1462,7 @@ TEST_LIST {
TEST_ENTRY(glm_vec2_normalize)
TEST_ENTRY(glm_vec2_normalize_to)
TEST_ENTRY(glm_vec2_rotate)
TEST_ENTRY(glm_vec2_center)
TEST_ENTRY(glm_vec2_distance2)
TEST_ENTRY(glm_vec2_distance)
TEST_ENTRY(glm_vec2_maxv)
@@ -1498,6 +1501,7 @@ TEST_LIST {
TEST_ENTRY(glmc_vec2_normalize)
TEST_ENTRY(glmc_vec2_normalize_to)
TEST_ENTRY(glmc_vec2_rotate)
TEST_ENTRY(glmc_vec2_center)
TEST_ENTRY(glmc_vec2_distance2)
TEST_ENTRY(glmc_vec2_distance)
TEST_ENTRY(glmc_vec2_maxv)