vector: fix vec4 normalize and optimize vec* normalizations

This commit is contained in:
Recep Aslantas
2016-11-29 17:38:16 +02:00
parent 8d5dc3b2e7
commit 6e08757605

View File

@@ -182,51 +182,6 @@ glm_vec4_normalize_to(vec4 vec, vec4 dest) {
dest[3] = vec[3] / norm;
}
/*!
* @brief normalize vec3 and store result in same vec
*
* @param[in, out] v vector
*/
CGLM_INLINE
void
glm_vec_normalize(vec3 v) {
float norm;
norm = glm_vec_norm(v);
if (norm == 0.0f) {
v[0] = v[1] = v[2] = 0.0f;
return;
}
v[0] = v[0] / norm;
v[1] = v[1] / norm;
v[2] = v[2] / norm;
}
/*!
* @brief normalize vec4 and store result in same vec
*
* @param[in, out] v vector
*/
CGLM_INLINE
void
glm_vec4_normalize(vec4 v) {
float norm;
norm = glm_vec_norm(v);
if (norm == 0.0f) {
v[0] = v[1] = v[2] = v[3] = 0.0f;
return;
}
v[0] = v[0] / norm;
v[1] = v[1] / norm;
v[2] = v[2] / norm;
v[3] = v[3] / norm;
}
/*!
* @brief add v2 vector to v1 vector store result in dest
*
@@ -374,6 +329,46 @@ glm_vec4_scale(vec4 v, float s, vec4 dest) {
#endif
}
/*!
* @brief normalize vec3 and store result in same vec
*
* @param[in, out] v vector
*/
CGLM_INLINE
void
glm_vec_normalize(vec3 v) {
float norm;
norm = glm_vec_norm(v);
if (norm == 0.0f) {
v[0] = v[1] = v[2] = 0.0f;
return;
}
glm_vec_scale(v, 1.0f / norm, v);
}
/*!
* @brief normalize vec4 and store result in same vec
*
* @param[in, out] v vector
*/
CGLM_INLINE
void
glm_vec4_normalize(vec4 v) {
float norm;
norm = glm_vec4_norm(v);
if (norm == 0.0f) {
v[0] = v[1] = v[2] = v[3] = 0.0f;
return;
}
glm_vec4_scale(v, 1.0f / norm, v);
}
/*!
* @brief angle betwen two vector
*