[Bf-blender-cvs] SVN commit: /data/svn/bf-blender [46883] trunk/blender/source/blender/ blenkernel: code cleanup: key/interpolation

Campbell Barton ideasman42 at gmail.com
Tue May 22 15:59:59 CEST 2012


Revision: 46883
          http://projects.blender.org/scm/viewvc.php?view=rev&root=bf-blender&revision=46883
Author:   campbellbarton
Date:     2012-05-22 13:59:58 +0000 (Tue, 22 May 2012)
Log Message:
-----------
code cleanup: key/interpolation

Modified Paths:
--------------
    trunk/blender/source/blender/blenkernel/BKE_key.h
    trunk/blender/source/blender/blenkernel/intern/key.c

Modified: trunk/blender/source/blender/blenkernel/BKE_key.h
===================================================================
--- trunk/blender/source/blender/blenkernel/BKE_key.h	2012-05-22 13:43:36 UTC (rev 46882)
+++ trunk/blender/source/blender/blenkernel/BKE_key.h	2012-05-22 13:59:58 UTC (rev 46883)
@@ -55,9 +55,9 @@
 void BKE_key_make_local(struct Key *key);
 void sort_keys(struct Key *key);
 
-void key_curve_position_weights(float t, float *data, int type);
-void key_curve_tangent_weights(float t, float *data, int type);
-void key_curve_normal_weights(float t, float *data, int type);
+void key_curve_position_weights(float t, float data[4], int type);
+void key_curve_tangent_weights(float t, float data[4], int type);
+void key_curve_normal_weights(float t, float data[4], int type);
 
 float *do_ob_key(struct Scene *scene, struct Object *ob);
 

Modified: trunk/blender/source/blender/blenkernel/intern/key.c
===================================================================
--- trunk/blender/source/blender/blenkernel/intern/key.c	2012-05-22 13:43:36 UTC (rev 46882)
+++ trunk/blender/source/blender/blenkernel/intern/key.c	2012-05-22 13:59:58 UTC (rev 46883)
@@ -271,7 +271,7 @@
 
 /**************** do the key ****************/
 
-void key_curve_position_weights(float t, float *data, int type)
+void key_curve_position_weights(float t, float data[4], int type)
 {
 	float t2, t3, fc;
 	
@@ -303,7 +303,7 @@
 }
 
 /* first derivative */
-void key_curve_tangent_weights(float t, float *data, int type)
+void key_curve_tangent_weights(float t, float data[4], int type)
 {
 	float t2, fc;
 	
@@ -333,7 +333,7 @@
 }
 
 /* second derivative */
-void key_curve_normal_weights(float t, float *data, int type)
+void key_curve_normal_weights(float t, float data[4], int type)
 {
 	float fc;
 	
@@ -359,11 +359,11 @@
 	}
 }
 
-static int setkeys(float fac, ListBase *lb, KeyBlock *k[], float *t, int cycl)
+static int setkeys(float fac, ListBase *lb, KeyBlock *k[], float t[4], int cycl)
 {
 	/* return 1 means k[2] is the position, return 0 means interpolate */
 	KeyBlock *k1, *firstkey;
-	float d, dpos, ofs = 0, lastpos, temp, fval[4];
+	float d, dpos, ofs = 0, lastpos;
 	short bsplinetype;
 
 	firstkey = lb->first;
@@ -467,17 +467,12 @@
 	}
 
 	/* interpolation */
-	
 	key_curve_position_weights(d, t, k[1]->type);
 
 	if (k[1]->type != k[2]->type) {
-		key_curve_position_weights(d, fval, k[2]->type);
-		
-		temp = 1.0f - d;
-		t[0] = temp * t[0] + d * fval[0];
-		t[1] = temp * t[1] + d * fval[1];
-		t[2] = temp * t[2] + d * fval[2];
-		t[3] = temp * t[3] + d * fval[3];
+		float t_other[4];
+		key_curve_position_weights(d, t_other, k[2]->type);
+		interp_v4_v4v4(t, t, t_other, d);
 	}
 
 	return 0;




More information about the Bf-blender-cvs mailing list