codess
Version:
vscode代码片段管理器,通过 本地包(本地某个文件夹) 或官网的 远程包(代码片段集合) 生成本地项目的 vscode 代码片段配置。
100 lines (99 loc) • 2.95 kB
JavaScript
"use strict";
Object.defineProperty(exports, "__esModule", { value: true });
exports.MathUtils = void 0;
class MathUtils {
static scaleTransform(num, radix = 10) {
return num.toString(radix);
}
static RandomFromWithWeight(numArr, weightArr) {
if (numArr == null || numArr.length == 0) {
return null;
}
let totalWeight = 0;
for (const weight of weightArr) {
totalWeight += weight;
}
const randomWeight = MathUtils.Random(0, totalWeight);
let currentWeight = 0;
for (let i = 0; i < numArr.length; ++i) {
currentWeight += weightArr[i];
if (randomWeight < currentWeight) {
return numArr[i];
}
}
return numArr[numArr.length - 1];
}
static RandomInt(min, max) {
return Math.round(this.Random(min, max));
}
static Random(min, max) {
if (min == max) {
return min;
}
return (max - min) * Math.random() + min;
}
static randomRangeInt(min, max) {
return Math.floor(Math.random() * (max - min) + min);
}
static RandomRatio(ratio) {
let v = MathUtils.RandomInt(0, 10000) * 0.01;
return ratio > v;
}
static Clamp(value, min, max) {
if (value < min)
return min;
if (value > max)
return max;
return value;
}
static Clamp01(value) {
return this.Clamp(value, 0, 1);
}
static Sign(value) {
if (value == 0)
return 1;
return value > 0 ? 1 : -1;
}
static GetNumCount(num) {
let numberCount = 0;
let newNumber = num;
while (newNumber / 10 > 0) {
newNumber = Math.floor(newNumber / 10);
numberCount++;
}
return numberCount;
}
static Lerp(from, to, progress) {
return from + (to - from) * MathUtils.Clamp01(progress);
}
static MoveTowardsAngle(current, target, maxDelta) {
const num = MathUtils.DeltaAngle(current, target);
if (0 - maxDelta < num && num < maxDelta) {
return target;
}
target = current + num;
return MathUtils.MoveTowards(current, target, maxDelta);
}
static MoveTowards(current, target, maxDelta) {
if (Math.abs(target - current) <= maxDelta) {
return target;
}
return current + Math.sign(target - current) * maxDelta;
}
static DeltaAngle(current, target) {
let num = MathUtils.Repeat(target - current, 360);
if (num > 180) {
num -= 360;
}
return num;
}
static Repeat(t, length) {
return MathUtils.Clamp(t - Math.floor(t / length) * length, 0, length);
}
static IsSimilar(n1, n2) {
return n1 == n2;
}
}
exports.MathUtils = MathUtils;
MathUtils.Deg2Rad = 0.0175;
MathUtils.Rad2Deg = 57.2958;