BangleApps/apps/solarclock/solar_math_utils.js

48 lines
1.3 KiB
JavaScript

const _TWO_PI = 2 * Math.PI;
function _format00(num){
var value = (num | 0);
if(value > 99 || value < 0)
throw "must be between in range 0-99";
if(value < 10)
return "0" + value.toString();
else
return value.toString();
}
const Maths2 = {
TWO_PI: _TWO_PI,
to_radians: (degrees)=> _TWO_PI * degrees / 360,
to_degrees: (radians)=> 360 * radians/ (_TWO_PI),
interpolate: (vector1, vector2, fraction)=>{
var result = [];
for(var i=0; i< vector1.length; i++){
var value = vector1[i] + (vector2[i] - vector1[i]) * fraction;
result.push(value);
}
return result;
},
format00: (num)=>{
return _format00(num)
},
format000_00: (num)=>{
var mantissa = (num | 0);
var mantissa_abs = Math.abs(mantissa);
var remainder = ((Math.abs(num) - mantissa_abs)*100|0);
var sign = "-";
if(num >= 0)
sign = "+";
return sign + mantissa_abs.toString() + "." + _format00(remainder);
},
random_walk: (value,step,max,min)=>{
if(Math.random()>0.5){
value -= step;
} else {
value += step;
}
value = Math.min(value,max);
value = Math.max(value,min);
return value;
}
}
module.exports = Maths2;