[ Index ] |
|
Code source de eGroupWare 1.2.106-2 |
1 /* 2 DynAPI Distribution 3 dynapi.functions.Math extension 4 5 Math and Path functions 6 */ 7 8 var f = dynapi.functions; 9 f.Math = {}; // used by dynapi.library 10 11 // Math Functions -------------------------- 12 13 f.radianToDegree = function(radian) { 14 return radian*180/Math.PI; 15 }; 16 f.degreeToRadian = function(degree) { 17 return degree*Math.PI/180; 18 }; 19 f.sintable = function(lsin) { 20 for (var i=0; i<361; i+=1) lsin[i]=Math.sin((i/180)*Math.PI); 21 }; 22 f.costable = function(lcos) { 23 for (var i=0; i<361; i+=1) lcos[i]=Math.cos((i/180)*Math.PI); 24 }; 25 f.getRandomNumber = function(n) { 26 var t=new Date(); 27 n=(n)? n: parseInt(Math.random()*10000); 28 return Math.round((Math.abs(Math.sin(t.getTime()))*(Math.random()*1000)))%n+1; 29 }; 30 f.getGUID = function() { // Globally Unique ID 31 var n1,n2,n3,n4; 32 var l,r,m,c=Math.random()+''; 33 c=c.substr(c.indexOf('.')+1); 34 m=(c.length-1)/2; 35 l=c.substr(0,m); r=c.substr(m); 36 n1=this.getRandomNumber(1000); 37 n2=this.getRandomNumber(255);n3=this.getRandomNumber(255);n4=this.getRandomNumber(255); 38 n2 = (n2 < 16 ? '0' : '') + n2.toString(16); 39 n3 = (n3 < 16 ? '0' : '') + n3.toString(16); 40 n4 = (n4 < 16 ? '0' : '') + n4.toString(16); 41 return (n1+n2+'-'+l+'-'+n3+n4+'-'+r).toUpperCase(); 42 }; 43 44 // Path Functions ------------------------ 45 46 // Combines separate [x1,x2],[y1,y2] arrays into a path array [x1,y1,x2,y2] 47 f.interlacePaths = function (x,y) { 48 var l = Math.max(x.length,y.length); 49 var a = new Array(l*2); 50 for (var i=0; i<l; i++) { 51 a[i*2] = x[i]; 52 a[i*2+1] = y[i]; 53 } 54 return a; 55 }; 56 57 // Returns correct angle in radians between 2 points 58 f.getNormalizedAngle = function (x1,y1,x2,y2) { 59 var distx = Math.abs(x1-x2); 60 var disty = Math.abs(y1-y2); 61 if (distx==0 && disty==0) angle = 0; 62 else if (distx==0) angle = Math.PI/2; 63 else angle = Math.atan(disty/distx); 64 if (x1<x2) { 65 if (y1<y2) angle = Math.PI*2-angle; 66 } 67 else { 68 if (y1<y2) angle = Math.PI+angle; 69 else angle = Math.PI-angle; 70 } 71 return angle; 72 }; 73 74 // Generates a path between 2 points in N steps 75 f.generateLinePath = function(x1,y1,x2,y2,N) { 76 if (N==0) return []; 77 var dx = (x2 == x1)? 0 : (x2 - x1)/N; 78 var dy = (y2 == y1)? 0 : (y2 - y1)/N; 79 var path = new Array(); 80 for (var i=0;i<=N;i++) { 81 path[i*2] = Math.round(x1 + i*dx); 82 path[i*2+1] = Math.round(y1 + i*dy); 83 } 84 return path; 85 };
titre
Description
Corps
titre
Description
Corps
titre
Description
Corps
titre
Corps
Généré le : Sun Feb 25 17:20:01 2007 | par Balluche grâce à PHPXref 0.7 |