Math Lib: add axis_dominant_v3_ortho_single
authorCampbell Barton <ideasman42@gmail.com>
Wed, 9 Dec 2015 02:57:18 +0000 (13:57 +1100)
committerCampbell Barton <ideasman42@gmail.com>
Wed, 9 Dec 2015 03:03:38 +0000 (14:03 +1100)
source/blender/blenlib/BLI_math_geom.h
source/blender/blenlib/intern/math_geom_inline.c

index d804b57ffe19ce79f2dc5230ee23698fec5205bc..bf48338675263e4b93c8a6997e74f418ba5d6440 100644 (file)
@@ -417,7 +417,8 @@ void  axis_dominant_v3_to_m3(float r_mat[3][3], const float normal[3]);
 
 MINLINE void  axis_dominant_v3(int *r_axis_a, int *r_axis_b, const float axis[3]);
 MINLINE float axis_dominant_v3_max(int *r_axis_a, int *r_axis_b, const float axis[3]) ATTR_WARN_UNUSED_RESULT;
-MINLINE int axis_dominant_v3_single(const float vec[3]);
+MINLINE int   axis_dominant_v3_single(const float vec[3]);
+MINLINE int   axis_dominant_v3_ortho_single(const float vec[3]);
 
 MINLINE int max_axis_v3(const float vec[3]);
 MINLINE int min_axis_v3(const float vec[3]);
index 44b17681540ce0de889f67cfb18a0783e771ea9a..68a2e68db4f0c3e91305cad519cac81058e734fb 100644 (file)
@@ -199,6 +199,17 @@ MINLINE int axis_dominant_v3_single(const float vec[3])
               ((y > z) ? 1 : 2));
 }
 
+/* the dominant axis of an orthogonal vector */
+MINLINE int axis_dominant_v3_ortho_single(const float vec[3])
+{
+       const float x = fabsf(vec[0]);
+       const float y = fabsf(vec[1]);
+       const float z = fabsf(vec[2]);
+       return ((x < y) ?
+              ((x < z) ? 0 : 2) :
+              ((y < z) ? 1 : 2));
+}
+
 MINLINE int max_axis_v3(const float vec[3])
 {
        const float x = vec[0];