mirror of
https://github.com/recp/cglm.git
synced 2025-10-04 01:00:46 +00:00
vec: implement min and max
This commit is contained in:
@@ -96,6 +96,14 @@ CGLM_EXPORT
|
||||
float
|
||||
glmc_vec_distance(vec3 v1, vec3 v2);
|
||||
|
||||
CGLM_EXPORT
|
||||
void
|
||||
glmc_vec_maxv(vec3 v1, vec3 v2, vec3 dest);
|
||||
|
||||
CGLM_EXPORT
|
||||
void
|
||||
glmc_vec_minv(vec3 v1, vec3 v2, vec3 dest);
|
||||
|
||||
#ifdef __cplusplus
|
||||
}
|
||||
#endif
|
||||
|
@@ -77,6 +77,14 @@ CGLM_EXPORT
|
||||
float
|
||||
glmc_vec4_distance(vec4 v1, vec4 v2);
|
||||
|
||||
CGLM_EXPORT
|
||||
void
|
||||
glmc_vec4_maxv(vec4 v1, vec4 v2, vec4 dest);
|
||||
|
||||
CGLM_EXPORT
|
||||
void
|
||||
glmc_vec4_minv(vec4 v1, vec4 v2, vec4 dest);
|
||||
|
||||
#ifdef __cplusplus
|
||||
}
|
||||
#endif
|
||||
|
@@ -40,6 +40,8 @@
|
||||
CGLM_INLINE void glm_vec_rotate_m4(mat4 m, vec3 v, vec3 dest);
|
||||
CGLM_INLINE void glm_vec_proj(vec3 a, vec3 b, vec3 dest);
|
||||
CGLM_INLINE void glm_vec_center(vec3 v1, vec3 v2, vec3 dest);
|
||||
CGLM_INLINE void glm_vec_maxv(vec3 v1, vec3 v2, vec3 dest);
|
||||
CGLM_INLINE void glm_vec_minv(vec3 v1, vec3 v2, vec3 dest);
|
||||
*/
|
||||
|
||||
#ifndef cglm_vec3_h
|
||||
@@ -402,4 +404,56 @@ glm_vec_distance(vec3 v1, vec3 v2) {
|
||||
+ glm_pow2(v2[2] - v1[2]));
|
||||
}
|
||||
|
||||
/*!
|
||||
* @brief max values of vectors
|
||||
*
|
||||
* @param[in] v1 vector1
|
||||
* @param[in] v2 vector2
|
||||
* @param[out] dest destination
|
||||
*/
|
||||
CGLM_INLINE
|
||||
void
|
||||
glm_vec_maxv(vec3 v1, vec3 v2, vec3 dest) {
|
||||
if (v1[0] > v2[0])
|
||||
dest[0] = v1[0];
|
||||
else
|
||||
dest[0] = v2[0];
|
||||
|
||||
if (v1[1] > v2[1])
|
||||
dest[1] = v1[1];
|
||||
else
|
||||
dest[1] = v2[1];
|
||||
|
||||
if (v1[2] > v2[2])
|
||||
dest[2] = v1[2];
|
||||
else
|
||||
dest[2] = v2[2];
|
||||
}
|
||||
|
||||
/*!
|
||||
* @brief min values of vectors
|
||||
*
|
||||
* @param[in] v1 vector1
|
||||
* @param[in] v2 vector2
|
||||
* @param[out] dest destination
|
||||
*/
|
||||
CGLM_INLINE
|
||||
void
|
||||
glm_vec_minv(vec3 v1, vec3 v2, vec3 dest) {
|
||||
if (v1[0] < v2[0])
|
||||
dest[0] = v1[0];
|
||||
else
|
||||
dest[0] = v2[0];
|
||||
|
||||
if (v1[1] < v2[1])
|
||||
dest[1] = v1[1];
|
||||
else
|
||||
dest[1] = v2[1];
|
||||
|
||||
if (v1[2] < v2[2])
|
||||
dest[2] = v1[2];
|
||||
else
|
||||
dest[2] = v2[2];
|
||||
}
|
||||
|
||||
#endif /* cglm_vec3_h */
|
||||
|
@@ -26,6 +26,7 @@
|
||||
#define cglm_vec4_ext_h
|
||||
|
||||
#include "common.h"
|
||||
#include "vec3-ext.h"
|
||||
#include <stdbool.h>
|
||||
#include <math.h>
|
||||
#include <float.h>
|
||||
|
@@ -35,6 +35,8 @@
|
||||
CGLM_INLINE void glm_vec4_normalize(vec4 v);
|
||||
CGLM_INLINE void glm_vec4_normalize_to(vec4 vec, vec4 dest);
|
||||
CGLM_INLINE float glm_vec4_distance(vec4 v1, vec4 v2);
|
||||
CGLM_INLINE void glm_vec4_maxv(vec4 v1, vec4 v2, vec4 dest);
|
||||
CGLM_INLINE void glm_vec4_minv(vec4 v1, vec4 v2, vec4 dest);
|
||||
*/
|
||||
|
||||
#ifndef cglm_vec4_h
|
||||
@@ -318,4 +320,66 @@ glm_vec4_distance(vec4 v1, vec4 v2) {
|
||||
+ glm_pow2(v2[3] - v1[3]));
|
||||
}
|
||||
|
||||
/*!
|
||||
* @brief max values of vectors
|
||||
*
|
||||
* @param[in] v1 vector1
|
||||
* @param[in] v2 vector2
|
||||
* @param[out] dest destination
|
||||
*/
|
||||
CGLM_INLINE
|
||||
void
|
||||
glm_vec4_maxv(vec4 v1, vec4 v2, vec4 dest) {
|
||||
if (v1[0] > v2[0])
|
||||
dest[0] = v1[0];
|
||||
else
|
||||
dest[0] = v2[0];
|
||||
|
||||
if (v1[1] > v2[1])
|
||||
dest[1] = v1[1];
|
||||
else
|
||||
dest[1] = v2[1];
|
||||
|
||||
if (v1[2] > v2[2])
|
||||
dest[2] = v1[2];
|
||||
else
|
||||
dest[2] = v2[2];
|
||||
|
||||
if (v1[3] > v2[3])
|
||||
dest[3] = v1[3];
|
||||
else
|
||||
dest[3] = v2[3];
|
||||
}
|
||||
|
||||
/*!
|
||||
* @brief min values of vectors
|
||||
*
|
||||
* @param[in] v1 vector1
|
||||
* @param[in] v2 vector2
|
||||
* @param[out] dest destination
|
||||
*/
|
||||
CGLM_INLINE
|
||||
void
|
||||
glm_vec4_minv(vec4 v1, vec4 v2, vec4 dest) {
|
||||
if (v1[0] < v2[0])
|
||||
dest[0] = v1[0];
|
||||
else
|
||||
dest[0] = v2[0];
|
||||
|
||||
if (v1[1] < v2[1])
|
||||
dest[1] = v1[1];
|
||||
else
|
||||
dest[1] = v2[1];
|
||||
|
||||
if (v1[2] < v2[2])
|
||||
dest[2] = v1[2];
|
||||
else
|
||||
dest[2] = v2[2];
|
||||
|
||||
if (v1[3] < v2[3])
|
||||
dest[3] = v1[3];
|
||||
else
|
||||
dest[3] = v2[3];
|
||||
}
|
||||
|
||||
#endif /* cglm_vec4_h */
|
||||
|
@@ -10,6 +10,6 @@
|
||||
|
||||
#define CGLM_VERSION_MAJOR 0
|
||||
#define CGLM_VERSION_MINOR 3
|
||||
#define CGLM_VERSION_PATCH 1
|
||||
#define CGLM_VERSION_PATCH 2
|
||||
|
||||
#endif /* cglm_version_h */
|
||||
|
Reference in New Issue
Block a user