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:
authorCampbell Barton <ideasman42@gmail.com>2014-03-31 04:17:46 +0400
committerCampbell Barton <ideasman42@gmail.com>2014-03-31 04:19:32 +0400
commit6aa75d3b2c3d4a5dc58120a51fdee0a7c12ab93c (patch)
tree86898d7de3be6a175d8cfe6190dd6750a40c0eb1 /source/blender/blenlib/intern/math_vector.c
parente001b5b33ec1fa8897b5fdc0b125a813ec6a4cd1 (diff)
Fix for error in normalize_vn_vn(), add len_squared_vn
Diffstat (limited to 'source/blender/blenlib/intern/math_vector.c')
-rw-r--r--source/blender/blenlib/intern/math_vector.c18
1 files changed, 17 insertions, 1 deletions
diff --git a/source/blender/blenlib/intern/math_vector.c b/source/blender/blenlib/intern/math_vector.c
index 19865aa00bd..3fbddacaea2 100644
--- a/source/blender/blenlib/intern/math_vector.c
+++ b/source/blender/blenlib/intern/math_vector.c
@@ -665,6 +665,11 @@ void axis_sort_v3(const float axis_values[3], int r_axis_order[3])
/***************************** Array Functions *******************************/
+MINLINE double sqr_db(double f)
+{
+ return f * f;
+}
+
double dot_vn_vn(const float *array_src_a, const float *array_src_b, const int size)
{
double d = 0.0f;
@@ -677,9 +682,20 @@ double dot_vn_vn(const float *array_src_a, const float *array_src_b, const int s
return d;
}
+double len_squared_vn(const float *array, const int size)
+{
+ double d = 0.0f;
+ const float *array_pt = array + (size - 1);
+ int i = size;
+ while (i--) {
+ d += sqr_db((double)(*(array_pt--)));
+ }
+ return d;
+}
+
float normalize_vn_vn(float *array_tar, const float *array_src, const int size)
{
- double d = dot_vn_vn(array_tar, array_src, size);
+ double d = len_squared_vn(array_src, size);
float d_sqrt;
if (d > 1.0e-35) {
d_sqrt = (float)sqrt(d);