123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172 |
- if(!dojo._hasResource["dojox.math._base"]){
- dojo._hasResource["dojox.math._base"] = true;
- dojo.provide("dojox.math._base");
- dojo.getObject("math", true, dojox);
- (function(){
- var m = dojox.math;
- dojo.mixin(dojox.math, {
- toRadians: function(/* Number */n){
-
-
- return (n*Math.PI)/180;
- },
- toDegrees: function(/* Number */n){
-
-
- return (n*180)/Math.PI;
- },
- degreesToRadians: function(/* Number */n){
-
-
- return m.toRadians(n);
- },
- radiansToDegrees: function(/* Number */n){
-
-
- return m.toDegrees(n);
- },
- _gamma: function(z){
-
-
-
- var answer = 1;
-
- while (--z >= 1){
- answer *= z;
- }
- if(z == 0){ return answer; }
- if(Math.floor(z) == z){ return NaN; }
-
- if(z == -0.5){ return Math.sqrt(Math.PI); }
- if(z < -0.5){
- return Math.PI / (Math.sin(Math.PI * (z + 1)) * this._gamma(-z));
- }
-
-
- var a = 13;
-
-
-
-
-
-
- var c = [
- 5.6658056015186327e-6,
- 1.2743717663379679,
- -4.9374199093155115,
- 7.8720267032485961,
- -6.6760503749436087,
- 3.2525298444485167,
- -9.1852521441026269e-1,
- 1.4474022977730785e-1,
- -1.1627561382389853e-2,
- 4.0117980757066622e-4,
- -4.2652458386405744e-6,
- 6.6651913290336086e-9,
- -1.5392547381874824e-13
- ];
- var sum = c[0];
- for (var k=1; k < a; k++){
- sum += c[k] / (z + k);
- }
- return answer * Math.pow(z + a, z + 0.5) / Math.exp(z) * sum;
- },
- factorial: function(/* Number */n){
-
-
- return this._gamma(n+1);
- },
- permutations: function(/* Number */n, /* Number */k){
-
-
- if(n==0 || k==0){
- return 1;
- }
- return this.factorial(n) / this.factorial(n-k);
- },
- combinations: function(/* Number */n, /* Number */r){
-
-
- if(n==0 || r==0){
- return 1;
- }
- return this.factorial(n) / (this.factorial(n-r) * this.factorial(r));
- },
- bernstein: function(/* Number */t, /* Number */n, /* Number */ i){
-
-
- return this.combinations(n, i) * Math.pow(t, i) * Math.pow(1-t, n-i);
- },
- gaussian: function(){
-
-
- 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);
- },
-
- range: function(/* Number */a, /* Number? */b, /* Number? */step){
-
-
- if(arguments.length<2){
- b=a,a=0;
- }
- var range=[], s=step||1, i;
- if(s>0){
- for(i=a; i<b; i+=s){
- range.push(i);
- }
- }else{
- if(s<0){
- for(i=a; i>b; i+=s){
- range.push(i);
- }
- }else{
- throw new Error("dojox.math.range: step must not be zero.");
- }
- }
- return range;
- },
- distance: function(/* Array */a, /* Array */b){
-
-
- return Math.sqrt(Math.pow(b[0]-a[0],2)+Math.pow(b[1]-a[1],2));
- },
- midpoint: function(/* Array */a, /* Array */b){
-
-
- 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;
- }
- });
- })();
- }
|