Skip to content

Commit

Permalink
Merge pull request #350 from duarm/vec2_center
Browse files Browse the repository at this point in the history
adding glm_vec2_center
  • Loading branch information
recp authored Oct 14, 2023
2 parents 5090788 + 9efc255 commit d93b46b
Show file tree
Hide file tree
Showing 7 changed files with 66 additions and 0 deletions.
10 changes: 10 additions & 0 deletions docs/source/vec2.rst
Original file line number Diff line number Diff line change
Expand Up @@ -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`
Expand Down Expand Up @@ -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
Expand Down
4 changes: 4 additions & 0 deletions include/cglm/call/vec2.h
Original file line number Diff line number Diff line change
Expand Up @@ -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);
Expand Down
16 changes: 16 additions & 0 deletions include/cglm/struct/vec2.h
Original file line number Diff line number Diff line change
Expand Up @@ -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)
Expand Down Expand Up @@ -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
*
Expand Down
15 changes: 15 additions & 0 deletions include/cglm/vec2.h
Original file line number Diff line number Diff line change
Expand Up @@ -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)
Expand Down Expand Up @@ -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
*
Expand Down
6 changes: 6 additions & 0 deletions src/vec2.c
Original file line number Diff line number Diff line change
Expand Up @@ -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) {
Expand Down
11 changes: 11 additions & 0 deletions test/src/test_vec2.h
Original file line number Diff line number Diff line change
Expand Up @@ -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},
Expand Down
4 changes: 4 additions & 0 deletions test/tests.h
Original file line number Diff line number Diff line change
Expand Up @@ -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)
Expand Down Expand Up @@ -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)
Expand Down Expand Up @@ -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)
Expand Down Expand Up @@ -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)
Expand Down

0 comments on commit d93b46b

Please sign in to comment.