Welcome to mirror list, hosted at ThFree Co, Russian Federation.

git.blender.org/blender.git - Unnamed repository; edit this file 'description' to name the repository.
summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorBastien Montagne <montagne29@wanadoo.fr>2015-03-17 20:13:35 +0300
committerBastien Montagne <montagne29@wanadoo.fr>2015-03-17 21:57:16 +0300
commit6ceb84c21724c6c3278abb1bfc27813f7a8f4036 (patch)
tree4db5f6ec65865295ef3c61a3cf28cbe84242ca38
parent948bc66a004d15324236f516a9b05001a39e1610 (diff)
BLI math vec: add 'abs' functions to get absolute values of a vector.
Unseful when handling e.g. scale, sometimes.
-rw-r--r--source/blender/blenlib/BLI_math_vector.h7
-rw-r--r--source/blender/blenlib/intern/math_vector_inline.c42
2 files changed, 49 insertions, 0 deletions
diff --git a/source/blender/blenlib/BLI_math_vector.h b/source/blender/blenlib/BLI_math_vector.h
index ffd80f46725..de712cbaa12 100644
--- a/source/blender/blenlib/BLI_math_vector.h
+++ b/source/blender/blenlib/BLI_math_vector.h
@@ -146,6 +146,13 @@ MINLINE void negate_v4_v4(float r[4], const float a[3]);
MINLINE void negate_v3_short(short r[3]);
+MINLINE void abs_v2(float r[2]);
+MINLINE void abs_v2_v2(float r[2], const float a[2]);
+MINLINE void abs_v3(float r[3]);
+MINLINE void abs_v3_v3(float r[3], const float a[3]);
+MINLINE void abs_v4(float r[4]);
+MINLINE void abs_v4_v4(float r[4], const float a[4]);
+
MINLINE float dot_v2v2(const float a[2], const float b[2]) ATTR_WARN_UNUSED_RESULT;
MINLINE float dot_v3v3(const float a[3], const float b[3]) ATTR_WARN_UNUSED_RESULT;
MINLINE float dot_v3v3v3(const float p[3], const float a[3], const float b[3]) ATTR_WARN_UNUSED_RESULT;
diff --git a/source/blender/blenlib/intern/math_vector_inline.c b/source/blender/blenlib/intern/math_vector_inline.c
index 6b6a3113e0b..89ae23fd448 100644
--- a/source/blender/blenlib/intern/math_vector_inline.c
+++ b/source/blender/blenlib/intern/math_vector_inline.c
@@ -611,6 +611,48 @@ MINLINE void negate_v3_short(short r[3])
r[2] = (short)-r[2];
}
+MINLINE void abs_v2(float r[2])
+{
+ r[0] = fabs(r[0]);
+ r[1] = fabs(r[1]);
+}
+
+MINLINE void abs_v2_v2(float r[2], const float a[2])
+{
+ r[0] = fabs(a[0]);
+ r[1] = fabs(a[1]);
+}
+
+MINLINE void abs_v3(float r[3])
+{
+ r[0] = fabs(r[0]);
+ r[1] = fabs(r[1]);
+ r[2] = fabs(r[2]);
+}
+
+MINLINE void abs_v3_v3(float r[3], const float a[3])
+{
+ r[0] = fabs(a[0]);
+ r[1] = fabs(a[1]);
+ r[2] = fabs(a[2]);
+}
+
+MINLINE void abs_v4(float r[4])
+{
+ r[0] = fabs(r[0]);
+ r[1] = fabs(r[1]);
+ r[2] = fabs(r[2]);
+ r[3] = fabs(r[3]);
+}
+
+MINLINE void abs_v4_v4(float r[4], const float a[4])
+{
+ r[0] = fabs(a[0]);
+ r[1] = fabs(a[1]);
+ r[2] = fabs(a[2]);
+ r[3] = fabs(a[3]);
+}
+
MINLINE float dot_v2v2(const float a[2], const float b[2])
{
return a[0] * b[0] + a[1] * b[1];