module.exports={
/**
* 阶乘
* @param n
*/
factorial: function (n) {
if (isNaN(n)) {
return -1;
}
var m = n, i = 2;
for (; i < n; i++) {
m *= i;
}
return m;
},
/**
* 排列组合
* @param n 元素的总个数
* @param m 参与选择的元素个数
*/
mamp: function (n, m) {
const self = this;
if (isNaN(n) || isNaN(m) || m < n) {
return -1;
}
let t = m, i = m - n + 1;
for (; i < m; i++) {
t *= i;
}
return t / self.factorial(n);
},
/**
* 0 - n 的整数 默认返回 [0, ]
* @param n = min [0, n]
* @param max = max [min, max]
* @returns {number}
*/
random: function (n, max) {
let isc=1;
if(max<=0 && n <0) //小于 0 的随机
{
let c = max ;
max=this.abs(n);
n = this.abs(c);
isc=-1;
}
let s = 1000000000, v = Math.random();
switch (arguments.length) {
case 1:
v = Math.ceil(v * s) % (n + 1);
break;
case 2:
v = (Math.ceil(v * s) % (max - n + 1)) + n;
break;
default :
v = Math.ceil(v * s);
break;
}
return isc*v;
},
/**
*
* @param num 数字
* @param multiple 10000 目标进位
* @param index 保留位数
* @returns {number}
*/
fixedFloor:function( num , multiple=1 , index=1 )
{
if(num < multiple)return num;
num = (Math.floor(num /multiple * (Math.pow(10,index)).toFixed(index))/ (Math.pow(10,index)));
return num ;
},
/***
* 计算两点的距离
*/
getDistance (x1,y1,x2,y2){
return Math.sqrt((x1-x2)*(x1-x2) + (y1-y2)*(y1-y2));
},
/***
* 两点的弧度
* @returns {number}
*/
getRadian (x1,y1,x2,y2){
let x = Math.abs(x2 - x1);
// let y = Math.abs(y2 - y1);
let z = this.getDistance(x1,y1,x2,y2);
if (z === 0){
return 0;
}
let sin = x/z;
return Math.asin(sin);
},
/***
* 两点的角度
* @returns {number}
*/
getAngle (x1,y1,x2,y2){
//如果其中一个坐标点小于0
if (x1 === x2 && y1 === y2)
return 0;
let angle = 90-Math.atan2(y2-y1,x2-x1)*180/Math.PI;
return angle;
},
/***
* 角度转弧度
* @param angle
* @returns {number}
* @constructor
*/
AngletoRadian (angle){
return Math.PI/180*angle;
},
/**
* 通过距离和角度,计算出x的长度
* @param z 三角形第三边长度
* @param angle
*/
getSinx (z, angle){
let radian = this.AngletoRadian(angle);
return Math.sin(radian)*z;
},
/**
* 通过距离和角度,计算出x的长度
* @param z 三角形第三边长度
* @param angle
*/
getCosx (z, angle){
var radian = this.AngletoRadian(angle);
return Math.cos(radian)*z;
},
}
【JavaScript】Math 工具
最新推荐文章于 2024-09-09 09:35:48 发布