[ Index ]
 

Code source de eGroupWare 1.2.106-2

Accédez au Source d'autres logiciels libresSoutenez Angelica Josefina !

title

Body

[fermer]

/phpgwapi/js/dynapi/fx/ -> bezier.js (source)

   1  /*
   2      DynAPI Distribution
   3      Bezier Class
   4      
   5      Bezier Algorithm Reference: http://astronomy.swin.edu.au/~pbourke/curves/bezier/
   6  
   7      The DynAPI Distribution is distributed under the terms of the GNU LGPL license.
   8  
   9      requires: dynapi.fx.Thread
  10  */
  11  
  12  
  13  function Bezier(cp, n) {
  14      var l = cp.length;
  15      var p = [];
  16      for (var i=0; i<n; i++) p = p.concat(Bezier._plot(cp,i/n));
  17      return p.concat([cp[l-2],cp[l-1]]);
  18  }
  19  
  20  Bezier._plot = function (cp, mu) {
  21      var n = (cp.length/2)-1;
  22      var k,kn,nn,nkn;
  23      var blend;
  24      var b = [0,0];
  25  
  26      var muk = 1;
  27      var munk = Math.pow(1-mu, n);
  28  
  29      for (k=0;k<=n;k++) {
  30          nn = n;
  31          kn = k;
  32          nkn = n - k;
  33          blend = muk * munk;
  34          muk *= mu;
  35          munk /= (1-mu);
  36          while (nn >= 1) {
  37              blend *= nn;
  38              nn--;
  39              if (kn > 1) {
  40                  blend /= kn;
  41                  kn--;
  42              }
  43              if (nkn > 1) {
  44                  blend /= nkn;
  45                  nkn--;
  46              }
  47          }
  48          
  49          b[0] += cp[k*2] * blend;
  50          b[1] += cp[k*2+1] * blend;
  51      }
  52      b[0] = Math.round(b[0]);
  53      b[1] = Math.round(b[1]);
  54      return b;
  55  }
  56  
  57  /*function Bezier3(cp,mu) {
  58      var x1=cp[0],y1=cp[1],x2=cp[2],y2=cp[3],x3=cp[4],y3=cp[5];
  59      var mu2 = mu * mu;
  60      var mum1 = 1 - mu;
  61      var mum12 = mum1 * mum1;
  62      var x = Math.round(x1 * mum12 + 2 * x2 * mum1 * mu + x3 * mu2);
  63      var y = Math.round(y1 * mum12 + 2 * y2 * mum1 * mu + y3 * mu2);
  64      return [x,y];
  65  }
  66  
  67  function Bezier4(cp,mu) {
  68      var x1=cp[0],y1=cp[1],x2=cp[2],y2=cp[3],x3=cp[4],y3=cp[5],x4=cp[6],y4=cp[7];
  69       var mum1 = 1 - mu;
  70      var mum13 = mum1 * mum1 * mum1;
  71      var mu3 = mu * mu * mu;
  72      var x = Math.round(mum13*x1 + 3*mu*mum1*mum1*x2 + 3*mu*mu*mum1*x3 + mu3*x4);
  73      var y = Math.round(mum13*y1 + 3*mu*mum1*mum1*y2 + 3*mu*mu*mum1*y3 + mu3*y4);
  74      return [x,y];
  75  }*/


Généré le : Sun Feb 25 17:20:01 2007 par Balluche grâce à PHPXref 0.7