svn merge ^/trunk/blender -r41226:41227 .
[blender.git] / source / blender / blenlib / intern / math_vector_inline.c
index c460b69..bf896f6 100644 (file)
@@ -308,18 +308,6 @@ MINLINE void mul_v3_v3v3(float r[3], const float v1[3], const float v2[3])
        r[2] = v1[2] * v2[2];
 }
 
-MINLINE void negate_v2(float r[3])
-{
-       r[0]= -r[0];
-       r[1]= -r[1];
-}
-
-MINLINE void negate_v2_v2(float r[2], const float a[2])
-{
-       r[0]= -a[0];
-       r[1]= -a[1];
-}
-
 MINLINE void negate_v3(float r[3])
 {
        r[0]= -r[0];
@@ -466,6 +454,29 @@ MINLINE float normalize_v3_v3(float r[3], const float a[3])
        return d;
 }
 
+MINLINE double normalize_dv3(double n[3])
+{
+       double d= n[0]*n[0] + n[1]*n[1] + n[2]*n[2];
+
+       /* a larger value causes normalize errors in a
+          scaled down models with camera xtreme close */
+       if(d > 1.0e-35) {
+               double mul;
+
+               d= sqrt(d);
+               mul = 1.0 / d;
+
+               n[0] *= mul;
+               n[1] *= mul;
+               n[2] *= mul;
+       } else {
+               n[0] = n[1] = n[2] = 0;
+               d= 0.0;
+       }
+
+       return d;
+}
+
 MINLINE float normalize_v3(float n[3])
 {
        return normalize_v3_v3(n, n);