[Bf-blender-cvs] [53ec177] master: optimize interp_weights_poly_v2, v3

Campbell Barton noreply at git.blender.org
Thu Dec 25 23:06:17 CET 2014


Commit: 53ec177b7f0d20865355468fda9a626176808635
Author: Campbell Barton
Date:   Fri Dec 26 08:44:23 2014 +1100
Branches: master
https://developer.blender.org/rB53ec177b7f0d20865355468fda9a626176808635

optimize interp_weights_poly_v2, v3

use line_point_factor instead of length between vertices.

===================================================================

M	source/blender/blenlib/intern/math_geom.c

===================================================================

diff --git a/source/blender/blenlib/intern/math_geom.c b/source/blender/blenlib/intern/math_geom.c
index 148495c..3a01875 100644
--- a/source/blender/blenlib/intern/math_geom.c
+++ b/source/blender/blenlib/intern/math_geom.c
@@ -2714,11 +2714,10 @@ void interp_weights_poly_v3(float *w, float v[][3], const int n, const float co[
 			w[i_curr] = 1.0f;
 		}
 		else {
-			float len_curr = len_v3v3(co, v_curr);
-			float len_next = len_v3v3(co, v_next);
-			float edge_len = len_curr + len_next;
-			w[i_curr] = len_next / edge_len;
-			w[(i_curr + 1) % n] = len_curr / edge_len;
+			float fac = line_point_factor_v3(co, v_curr, v_next);
+			CLAMP(fac, 0.0f, 1.0f);
+			w[i_curr] = 1.0f - fac;
+			w[(i_curr + 1) % n] = fac;
 		}
 	}
 	else {
@@ -2787,11 +2786,10 @@ void interp_weights_poly_v2(float *w, float v[][2], const int n, const float co[
 			w[i_curr] = 1.0f;
 		}
 		else {
-			float len_curr = len_v2v2(co, v_curr);
-			float len_next = len_v2v2(co, v_next);
-			float edge_len = len_curr + len_next;
-			w[i_curr] = len_next / edge_len;
-			w[(i_curr + 1) % n] = len_curr / edge_len;
+			float fac = line_point_factor_v2(co, v_curr, v_next);
+			CLAMP(fac, 0.0f, 1.0f);
+			w[i_curr] = 1.0f - fac;
+			w[(i_curr + 1) % n] = fac;
 		}
 	}
 	else {




More information about the Bf-blender-cvs mailing list