Files
ravaged-planet/math.js
T
2019-06-26 21:05:18 +02:00

48 lines
1.0 KiB
JavaScript

export function index2coords(width, i) {
return [i % width, Math.floor(i/width)];
}
export function coords2index(width, x, y) {
return y * width + x;
}
export function random(min, max) {
return min + Math.random() * (max-min);
}
export function randomInt(min, max) {
return Math.round(random(min, max));
}
export function sample(arr) {
return arr[randomInt(0, arr.length-1)];
}
export function clamp(min, x, max) {
return Math.max(min, Math.min(x, max));
}
export function wrap(min, x, max) {
return ((x-min + max-min) % (max-min)) + min;
}
export function within(x, y, tx, ty, r) {
return Math.abs(x-tx) < r && Math.abs(y-ty) < r;
}
export function parable(t, x, y, a, v, w=0, g=9.8) {
const fx = x + t*v * Math.cos(a) - 0.5 * -w * t*t;
const fy = y + t*v * Math.sin(a) - 0.5 * -g * t*t;
return [fx, fy];
}
export function vec(x, y, a, l) {
a = a * Math.PI / 180;
return [x+Math.cos(a)*l, y+Math.sin(a)*l];
}
export function deg2rad(a) { return a * Math.PI/180 }
export function rad2deg(a) { return a * 180/Math.PI }