Revision: 27725
          
http://projects.blender.org/plugins/scmsvn/viewcvs.php?view=rev&root=bf-blender&revision=27725
Author:   nazgul
Date:     2010-03-24 18:52:51 +0100 (Wed, 24 Mar 2010)

Log Message:
-----------
- Use vector interpolation functions from math_vector module in
  curve subdivision operator.
- Added function interp_v4_v4v4().

Modified Paths:
--------------
    trunk/blender/source/blender/blenlib/BLI_math_vector.h
    trunk/blender/source/blender/blenlib/intern/math_vector.c
    trunk/blender/source/blender/editors/curve/editcurve.c

Modified: trunk/blender/source/blender/blenlib/BLI_math_vector.h
===================================================================
--- trunk/blender/source/blender/blenlib/BLI_math_vector.h      2010-03-24 
17:09:10 UTC (rev 27724)
+++ trunk/blender/source/blender/blenlib/BLI_math_vector.h      2010-03-24 
17:52:51 UTC (rev 27725)
@@ -106,6 +106,7 @@
 void interp_v3_v3v3(float r[3], const float a[3], const float b[3], const 
float t);
 void interp_v3_v3v3v3(float p[3], const float v1[3], const float v2[3], const 
float v3[3], const float w[3]);
 void interp_v3_v3v3v3v3(float p[3], const float v1[3], const float v2[3], 
const float v3[3], const float v4[3], const float w[4]);
+void interp_v4_v4v4(float r[4], const float a[4], const float b[4], const 
float t);
 
 void mid_v3_v3v3(float r[3], float a[3], float b[3]);
 

Modified: trunk/blender/source/blender/blenlib/intern/math_vector.c
===================================================================
--- trunk/blender/source/blender/blenlib/intern/math_vector.c   2010-03-24 
17:09:10 UTC (rev 27724)
+++ trunk/blender/source/blender/blenlib/intern/math_vector.c   2010-03-24 
17:52:51 UTC (rev 27725)
@@ -55,6 +55,16 @@
        target[2]= s*a[2] + t*b[2];
 }
 
+void interp_v4_v4v4(float target[4], const float a[4], const float b[4], const 
float t)
+{
+       float s = 1.0f-t;
+
+       target[0]= s*a[0] + t*b[0];
+       target[1]= s*a[1] + t*b[1];
+       target[2]= s*a[2] + t*b[2];
+       target[3]= s*a[3] + t*b[3];
+}
+
 /* weight 3 vectors,
  * 'w' must be unit length but is not a vector, just 3 weights */
 void interp_v3_v3v3v3(float p[3], const float v1[3], const float v2[3], const 
float v3[3], const float w[3])

Modified: trunk/blender/source/blender/editors/curve/editcurve.c
===================================================================
--- trunk/blender/source/blender/editors/curve/editcurve.c      2010-03-24 
17:09:10 UTC (rev 27724)
+++ trunk/blender/source/blender/editors/curve/editcurve.c      2010-03-24 
17:52:51 UTC (rev 27725)
@@ -1874,21 +1874,6 @@
  * @param  None
 */
 
-void subdivide_v3(float *v, float *v1, float *v2, float factor)
-{
-       v[0]= v1[0] + factor*(v2[0] - v1[0]);
-       v[1]= v1[1] + factor*(v2[1] - v1[1]);
-       v[2]= v1[2] + factor*(v2[2] - v1[2]);
-}
-
-void subdivide_v4(float *v, float *v1, float *v2, float factor)
-{
-       v[0]= v1[0] + factor*(v2[0] - v1[0]);
-       v[1]= v1[1] + factor*(v2[1] - v1[1]);
-       v[2]= v1[2] + factor*(v2[2] - v1[2]);
-       v[3]= v1[3] + factor*(v2[3] - v1[3]);
-}
-
 static void subdividenurb(Object *obedit, int number_cuts)
 {
        Curve *cu= obedit->data;
@@ -1957,18 +1942,18 @@
                                                        memcpy(beztn, bezt, 
sizeof(BezTriple));
 
                                                        /* midpoint subdividing 
*/
-                                                       subdivide_v3(vec, 
prevvec[1], prevvec[2], factor);
-                                                       subdivide_v3(vec+3, 
prevvec[2], bezt->vec[0], factor);
-                                                       subdivide_v3(vec+6, 
bezt->vec[0], bezt->vec[1], factor);
+                                                       interp_v3_v3v3(vec, 
prevvec[1], prevvec[2], factor);
+                                                       interp_v3_v3v3(vec+3, 
prevvec[2], bezt->vec[0], factor);
+                                                       interp_v3_v3v3(vec+6, 
bezt->vec[0], bezt->vec[1], factor);
 
-                                                       subdivide_v3(vec+9, 
vec, vec+3, factor);
-                                                       subdivide_v3(vec+12, 
vec+3, vec+6, factor);
+                                                       interp_v3_v3v3(vec+9, 
vec, vec+3, factor);
+                                                       interp_v3_v3v3(vec+12, 
vec+3, vec+6, factor);
 
                                                        /* change handle of 
prev beztn */
                                                        
VECCOPY((beztn-1)->vec[2], vec);
                                                        /* new point */
                                                        VECCOPY(beztn->vec[0], 
vec+9);
-                                                       
subdivide_v3(beztn->vec[1], vec+9, vec+12, factor);
+                                                       
interp_v3_v3v3(beztn->vec[1], vec+9, vec+12, factor);
                                                        VECCOPY(beztn->vec[2], 
vec+12);
                                                        /* handle of next bezt 
*/
                                                        if(a==0 && (nu->flagu & 
CU_NURB_CYCLIC)) {VECCOPY(beztnew->vec[0], vec+6);}
@@ -2045,7 +2030,7 @@
                                                        factor = (float)(i + 1) 
/ (number_cuts + 1);
 
                                                        memcpy(bpn, bp, 
sizeof(BPoint));
-                                                       subdivide_v4(bpn->vec, 
prevbp->vec, bp->vec, factor);
+                                                       
interp_v4_v4v4(bpn->vec, prevbp->vec, bp->vec, factor);
                                                        bpn++;
                                                }
 
@@ -2147,7 +2132,7 @@
                                                        for (i = 0; i < 
number_cuts; i++) {
                                                                factor = 
(float)(i + 1) / (number_cuts + 1);
                                                                *bpn= *bp;
-                                                               
subdivide_v4(bpn->vec, prevbp->vec, bp->vec, factor);
+                                                               
interp_v4_v4v4(bpn->vec, prevbp->vec, bp->vec, factor);
                                                                bpn++;
                                                        }
                                                }
@@ -2165,7 +2150,7 @@
                                                for (i = 0; i < number_cuts; 
i++) {
                                                        factor = (float)(i + 1) 
/ (number_cuts + 1);
                                                        *tmp= *bp;
-                                                       subdivide_v4(tmp->vec, 
prevbp->vec, bp->vec, factor);
+                                                       
interp_v4_v4v4(tmp->vec, prevbp->vec, bp->vec, factor);
                                                        tmp += countu;
                                                }
                                                bp++; 
@@ -2212,7 +2197,7 @@
                                                                                
  node. (is it?)
                                                                                
*/
                                                                                
*bpn= *prevbp;
-                                                                               
subdivide_v4(bpn->vec, prevbp->vec, bp->vec, factor);
+                                                                               
interp_v4_v4v4(bpn->vec, prevbp->vec, bp->vec, factor);
                                                                                
bpn++;
 
                                                                        
prevbp++;
@@ -2256,7 +2241,7 @@
                                                                                
factor = (float)(i + 1) / (number_cuts + 1);
                                                                        prevbp= 
bp- 1;
                                                                        *bpn= 
*prevbp;
-                                                                       
subdivide_v4(bpn->vec, prevbp->vec, bp->vec, factor);
+                                                                       
interp_v4_v4v4(bpn->vec, prevbp->vec, bp->vec, factor);
                                                                        bpn++;
                                                                        }
                                                                }


_______________________________________________
Bf-blender-cvs mailing list
[email protected]
http://lists.blender.org/mailman/listinfo/bf-blender-cvs

Reply via email to