]> git.pond.sub.org Git - eow/blobdiff - static/dojo-release-1.1.1/dojox/math/_base.js
add Dojo 1.1.1
[eow] / static / dojo-release-1.1.1 / dojox / math / _base.js
diff --git a/static/dojo-release-1.1.1/dojox/math/_base.js b/static/dojo-release-1.1.1/dojox/math/_base.js
new file mode 100644 (file)
index 0000000..ef2243c
--- /dev/null
@@ -0,0 +1,122 @@
+if(!dojo._hasResource["dojox.math._base"]){ //_hasResource checks added by build. Do not use _hasResource directly in your code.
+dojo._hasResource["dojox.math._base"] = true;
+dojo.provide("dojox.math._base");
+
+dojo.mixin(dojox.math, {
+       degreesToRadians: function(/* Number */n){
+               //      summary
+               //      Convert the passed number to radians.
+               return (n*Math.PI)/180; // Number
+       },
+       radiansToDegrees: function(/* Number */n){
+               //      summary
+               //      Convert the passed number to degrees.
+               return (n*180)/Math.PI; //      Number
+       },
+
+       factoral: function(/* Number */n){
+               //      summary
+               //      Return the factoral of n.
+               if(n<1){ 
+                       return 0;       // Number
+               }
+               var ret=1;
+               for(var i=1; i<=n; i++){
+                       ret*=i;
+               }
+               return ret;     // Number
+       },
+       permutations: function(/* Number */n, /* Number */k){
+               //      summary
+               //      TODO
+               if(n==0 || k==0){ 
+                       return 1;       // Number
+               }
+               return (this.factoral(n)/this.factoral(n-k));
+       },
+       combinations: function(/* Number */n, /* Number */r){
+               //      summary
+               //      TODO
+               if(n==0 || r==0){ 
+                       return 1;       //      Number
+               }
+               return (this.factoral(n)/(this.factoral(n-r)*this.factoral(r)));        // Number
+       },
+       bernstein: function(/* Number */t, /* Number */n, /* Number */ i){
+               //      summary
+               //      TODO
+               return (this.combinations(n, i)*Math.pow(t, i)*Math.pow(1-t, n-i));     //      Number
+       },
+       gaussian: function(){
+               //      summary
+               //      Return a random number based on the Gaussian algo.
+               var k=2;
+               do{
+                       var i=2*Math.random()-1;
+                       var j=2*Math.random()-1;
+                       k = i*i+j*j;
+               }while(k>=1);
+               return (i * Math.sqrt((-2*Math.log(k))/k));     //      Number
+       },
+
+       //      basic statistics
+       sd: function(/* Array */a){
+               //      summary
+               //      Returns the standard deviation of the passed arguments.
+               return Math.sqrt(this.variance(a));     //      Number
+       },
+       variance: function(/* Array */a){
+               //      summary
+               //      Find the variance in the passed array of numbers.
+               var mean=0, squares=0;
+               dojo.forEach(a, function(item){
+                       mean+=item;
+                       squares+=Math.pow(item,2);
+               });
+               return (squares/a.length)-Math.pow(mean/a.length, 2);   //      Number
+       },
+
+       //      create a range of numbers
+       range: function(/* Number */a, /* Number? */b, /* Number? */step){
+               //      summary
+               //      Create a range of numbers based on the parameters.
+               if(arguments.length<2){
+                       b=a,a=0;
+               }
+               var s=step||1;
+               var range=[];
+               if(s>0){
+                       for(var i=a; i<b; i+=s){
+                               range.push(i);
+                       }
+               }else{
+                       if(s<0){
+                               for(var i=a; i>b; i+=s){
+                                       range.push(i);
+                               }
+                       }else{
+                               throw new Error("dojox.math.range: step must not be zero.");
+                       }
+               }
+               return range;   // Array
+       },
+       distance: function(/* Array */a, /* Array */b){
+               //      summary
+               //      Calculate the distance between point A and point B
+               return Math.sqrt(Math.pow(b[0]-a[0],2)+Math.pow(b[1]-a[1],2));  //      Number
+       },
+       midpoint: function(/* Array */a, /* Array */b){
+               //      summary
+               //      Calculate the midpoint between points A and B.  A and B may be multidimensional.
+               if(a.length!=b.length){
+                       console.error("dojox.math.midpoint: Points A and B are not the same dimensionally.", a, b);
+               }
+               var m=[];
+               for(var i=0; i<a.length; i++){
+                       m[i]=(a[i]+b[i])/2;
+               }
+               return m;       //      Array
+       }
+});
+
+}