kunpolibrary/docs/Tools.md
2025-02-26 17:30:40 +08:00

98 lines
2.9 KiB
Markdown
Raw Permalink Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

## 工具
#### 一、数学工具 (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` (不需要关心)