mirror of
https://github.com/Gongxh0901/kunpolibrary
synced 2025-04-10 21:51:04 +00:00
98 lines
2.9 KiB
Markdown
98 lines
2.9 KiB
Markdown
## 工具
|
||
|
||
|
||
#### 一、数学工具 (MathTool)
|
||
|
||
```typescript
|
||
import { MathTool } from 'kunpocc';
|
||
|
||
// 1. 数值限制
|
||
// 将数值限制在指定范围内
|
||
const value = MathTool.clampf(75, 0, 100); // 返回75,因为在0-100范围内
|
||
const value2 = MathTool.clampf(150, 0, 100); // 返回100,因为超出上限
|
||
const value3 = MathTool.clampf(-50, 0, 100); // 返回0,因为低于下限
|
||
|
||
// 2. 随机数生成
|
||
// 生成指定范围内的整数(包含边界值)
|
||
const randomInt = MathTool.rand(1, 10); // 返回1到10之间的整数
|
||
|
||
// 生成指定范围内的浮点数(包含最小值,不包含最大值)
|
||
const randomFloat = MathTool.randRange(0, 1); // 返回0到1之间的浮点数
|
||
|
||
// 3. 角度与弧度转换
|
||
// 角度转弧度
|
||
const radian = MathTool.rad(90); // 90度转换为弧度:约1.57
|
||
|
||
// 弧度转角度
|
||
const degree = MathTool.deg(Math.PI); // π弧度转换为角度:180
|
||
|
||
// 4. 平滑过渡
|
||
// 用于实现数值的平滑变化,常用于相机跟随、UI动画等
|
||
const smoothValue = MathTool.smooth(
|
||
0, // 起始值
|
||
100, // 目标值
|
||
0.16, // 已经过时间(秒)
|
||
0.3 // 响应时间(秒)
|
||
); // 返回一个平滑过渡的中间值
|
||
```
|
||
|
||
使用说明:
|
||
|
||
1. `clampf(value: number, min: number, max: number): number`
|
||
- 将数值限制在指定范围内
|
||
- 如果小于最小值,返回最小值
|
||
- 如果大于最大值,返回最大值
|
||
- 否则返回原值
|
||
|
||
2. `rand(min: number, max: number): number`
|
||
- 生成指定范围内的随机整数
|
||
- 包含最小值和最大值
|
||
- 常用于随机选择、随机掉落等场景
|
||
|
||
3. `randRange(min: number, max: number): number`
|
||
- 生成指定范围内的随机浮点数
|
||
- 包含最小值,不包含最大值
|
||
- 常用于需要精确浮点随机数的场景
|
||
|
||
4. `rad(angle: number): number`
|
||
- 将角度转换为弧度
|
||
- 计算公式:angle * Math.PI / 180
|
||
|
||
5. `deg(radian: number): number`
|
||
- 将弧度转换为角度
|
||
- 计算公式:radian * 180 / Math.PI
|
||
|
||
6. `smooth(current: number, target: number, elapsedTime: number, responseTime: number): number`
|
||
- 计算平滑过渡的值
|
||
- current: 当前值
|
||
- target: 目标值
|
||
- elapsedTime: 已经过时间(秒)
|
||
- responseTime: 响应时间(秒)
|
||
- 常用于实现平滑的相机移动、UI动画等
|
||
|
||
#### 二、MD5
|
||
|
||
```typescript
|
||
import { md5 } from 'kunpocc';
|
||
|
||
// 字符串 MD5 加密
|
||
const hash = md5('Hello, World!');
|
||
console.log(hash); // 输出32位MD5哈希值
|
||
|
||
// 注意:
|
||
// 1. 输入必须是字符串类型
|
||
// 2. 不能传入 undefined 或 null
|
||
try {
|
||
md5(null); // 将抛出错误
|
||
} catch (error) {
|
||
console.error('MD5输入不能为null或undefined');
|
||
}
|
||
```
|
||
|
||
#### 三、数据结构
|
||
- 二叉堆(`BinaryHeap` 最大、最小堆)
|
||
- 单向(`LinkedList`)、双向链表 (`DoublyLinkedList`)
|
||
- 栈(`Stack`)
|
||
|
||
|
||
#### 四、适配相关 `Adapter` (不需要关心) |