summaryrefslogtreecommitdiff
path: root/includes/js/dojox/math/_base.js
diff options
context:
space:
mode:
Diffstat (limited to 'includes/js/dojox/math/_base.js')
-rw-r--r--includes/js/dojox/math/_base.js122
1 files changed, 122 insertions, 0 deletions
diff --git a/includes/js/dojox/math/_base.js b/includes/js/dojox/math/_base.js
new file mode 100644
index 0000000..ef2243c
--- /dev/null
+++ b/includes/js/dojox/math/_base.js
@@ -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
+ }
+});
+
+}