UNPKG

codess

Version:

vscode代码片段管理器,通过 本地包(本地某个文件夹) 或官网的 远程包(代码片段集合) 生成本地项目的 vscode 代码片段配置。

100 lines (99 loc) 2.95 kB
"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;