306 lines
8.8 KiB
Markdown
306 lines
8.8 KiB
Markdown
---
|
||
outline: [2, 3]
|
||
---
|
||
|
||
# RuptureEventManager
|
||
|
||
- 源文件:`packages/sdk/src/manager/RuptureEventManager.ts`
|
||
- 文档位置:`packages/docs/api/manager/RuptureEventManager.md`
|
||
|
||
## 接口:`RuptureEvent`
|
||
|
||
- 作用:破裂事件数据接口
|
||
|
||
### 字段
|
||
|
||
| 字段名 | 类型 | 必填 | 作用 |
|
||
| --- | --- | --- | --- |
|
||
| `position` | `{ x: number; y: number; z: number }` | 是 | 位置数据。 |
|
||
| `time` | `number` | 是 | 用于保存 `time` 对应的数据。 |
|
||
| `energy` | `number` | 是 | 用于保存 `energy` 对应的数据。 |
|
||
|
||
## 接口:`RuptureEventConfig`
|
||
|
||
- 作用:破裂事件配置接口
|
||
|
||
### 字段
|
||
|
||
| 字段名 | 类型 | 必填 | 作用 |
|
||
| --- | --- | --- | --- |
|
||
| `minRadius` | `number` | 否 | 用于保存 `minRadius` 对应的数据。 |
|
||
| `maxRadius` | `number` | 否 | 用于保存 `maxRadius` 对应的数据。 |
|
||
| `minEnergy` | `number` | 否 | 用于保存 `minEnergy` 对应的数据。 |
|
||
| `maxEnergy` | `number` | 否 | 用于保存 `maxEnergy` 对应的数据。 |
|
||
| `mappingType` | `'linear' \| 'logarithmic'` | 否 | 用于保存 `mappingType` 对应的数据。 |
|
||
| `crackModelUrls` | `string[]` | 否 | 用于保存 `crackModelUrls` 的集合数据。 |
|
||
| `crackBaseScale` | `number` | 否 | 用于保存 `crackBaseScale` 对应的数据。 |
|
||
|
||
## 类:`RuptureEventManager`
|
||
|
||
- 作用:破裂事件管理类 通过球体可视化破裂事件,球体大小表示能量,颜色表示时间序列
|
||
|
||
### 构造函数
|
||
|
||
#### `new RuptureEventManager(viewer: Viewer, config?: RuptureEventConfig)`
|
||
|
||
- 作用:构造函数
|
||
|
||
- 入参:
|
||
|
||
| 参数名 | 类型 | 必填 | 说明 |
|
||
| --- | --- | --- | --- |
|
||
| `viewer` | `Viewer` | 是 | Viewer实例 |
|
||
| `config` | `RuptureEventConfig` | 否 | 配置选项 |
|
||
|
||
- 出参:`RuptureEventManager`
|
||
- 返回说明:返回当前类实例。
|
||
|
||
### 属性
|
||
|
||
| 属性名 | 可见性 | 类型 | 作用 |
|
||
| --- | --- | --- | --- |
|
||
| `viewer` | `public` | `Viewer` | 用于保存 `viewer` 对应的数据。 |
|
||
| `scene` | `public` | `THREE.Scene` | 用于保存 `scene` 对应的数据。 |
|
||
| `events` | `public` | `Map<number, { event: RuptureEvent; mesh: THREE.Mesh; crackModel?: THREE.Group }>` | 用于保存 `events` 的映射关系。 |
|
||
| `config` | `public` | `Required<RuptureEventConfig>` | 用于保存 `config` 对应的数据。 |
|
||
| `minTime` | `public` | `number` | 用于保存 `minTime` 对应的数据。 |
|
||
| `maxTime` | `public` | `number` | 用于保存 `maxTime` 对应的数据。 |
|
||
| `crackModels` | `public` | `THREE.Group[]` | 用于保存 `crackModels` 的集合数据。 |
|
||
| `isLoadingModels` | `public` | `boolean` | 用于标记 `isLoadingModels` 的启用状态。 |
|
||
|
||
### 方法
|
||
|
||
#### `loadCrackModels(): Promise<void>`
|
||
|
||
- 作用:预加载裂缝模型
|
||
|
||
- 入参:无
|
||
|
||
- 出参:`Promise<void>`
|
||
- 返回说明:返回 Promise,解析结果类型为 `void`。
|
||
|
||
#### `createCrackModel(event: RuptureEvent, radius: number): THREE.Group<THREE.Object3DEventMap> | undefined`
|
||
|
||
- 作用:为破裂球创建裂缝模型
|
||
|
||
- 入参:
|
||
|
||
| 参数名 | 类型 | 必填 | 说明 |
|
||
| --- | --- | --- | --- |
|
||
| `event` | `RuptureEvent` | 是 | 破裂事件数据 |
|
||
| `radius` | `number` | 是 | 球体半径 |
|
||
|
||
- 出参:`THREE.Group<THREE.Object3DEventMap> \| undefined`
|
||
- 返回说明:裂缝模型实例
|
||
|
||
#### `addEvent(event: RuptureEvent): THREE.Mesh<THREE.BufferGeometry<THREE.NormalBufferAttributes, THREE.BufferGeometryEventMap>, THREE.Material<THREE.MaterialEventMap> | THREE.Material<THREE.MaterialEventMap>[], THREE.Object3DEventMap>`
|
||
|
||
- 作用:添加单个破裂事件
|
||
|
||
- 入参:
|
||
|
||
| 参数名 | 类型 | 必填 | 说明 |
|
||
| --- | --- | --- | --- |
|
||
| `event` | `RuptureEvent` | 是 | 破裂事件数据 |
|
||
|
||
- 出参:`THREE.Mesh<THREE.BufferGeometry<THREE.NormalBufferAttributes, THREE.BufferGeometryEventMap>, THREE.Material<THREE.MaterialEventMap> \| THREE.Material<THREE.MaterialEventMap>[], THREE.Object3DEventMap>`
|
||
- 返回说明:创建的球体网格
|
||
|
||
#### `addEvents(events: RuptureEvent[]): THREE.Mesh<THREE.BufferGeometry<THREE.NormalBufferAttributes, THREE.BufferGeometryEventMap>, THREE.Material<THREE.MaterialEventMap> | THREE.Material<THREE.MaterialEventMap>[], THREE.Object3DEventMap>[]`
|
||
|
||
- 作用:批量添加破裂事件
|
||
|
||
- 入参:
|
||
|
||
| 参数名 | 类型 | 必填 | 说明 |
|
||
| --- | --- | --- | --- |
|
||
| `events` | `RuptureEvent[]` | 是 | 破裂事件数组 |
|
||
|
||
- 出参:`THREE.Mesh<THREE.BufferGeometry<THREE.NormalBufferAttributes, THREE.BufferGeometryEventMap>, THREE.Material<THREE.MaterialEventMap> \| THREE.Material<THREE.MaterialEventMap>[], THREE.Object3DEventMap>[]`
|
||
- 返回说明:创建的球体网格数组
|
||
|
||
#### `removeEvent(time: number): boolean`
|
||
|
||
- 作用:删除破裂事件
|
||
|
||
- 入参:
|
||
|
||
| 参数名 | 类型 | 必填 | 说明 |
|
||
| --- | --- | --- | --- |
|
||
| `time` | `number` | 是 | 事件时间戳 |
|
||
|
||
- 出参:`boolean`
|
||
- 返回说明:是否删除成功
|
||
|
||
#### `clearEvents(): void`
|
||
|
||
- 作用:清空所有破裂事件
|
||
|
||
- 入参:无
|
||
|
||
- 出参:`void`
|
||
- 返回说明:无返回值。
|
||
|
||
#### `applyFilter(recentMinutes: number | null, energyThreshold: number | null): void`
|
||
|
||
- 作用:根据时间窗口和能量阈值过滤事件
|
||
|
||
- 入参:
|
||
|
||
| 参数名 | 类型 | 必填 | 说明 |
|
||
| --- | --- | --- | --- |
|
||
| `recentMinutes` | `number \| null` | 是 | 最近N分钟(null表示不过滤) |
|
||
| `energyThreshold` | `number \| null` | 是 | 能量阈值(null表示不过滤) |
|
||
|
||
- 出参:`void`
|
||
- 返回说明:无返回值。
|
||
|
||
#### `cancelFilter(): void`
|
||
|
||
- 作用:取消过滤,显示所有事件
|
||
|
||
- 入参:无
|
||
|
||
- 出参:`void`
|
||
- 返回说明:无返回值。
|
||
|
||
#### `getEvent(time: number): { event: RuptureEvent; mesh: THREE.Mesh; crackModel?: THREE.Group; } | undefined`
|
||
|
||
- 作用:获取事件
|
||
|
||
- 入参:
|
||
|
||
| 参数名 | 类型 | 必填 | 说明 |
|
||
| --- | --- | --- | --- |
|
||
| `time` | `number` | 是 | 事件时间戳 |
|
||
|
||
- 出参:`{ event: RuptureEvent; mesh: THREE.Mesh; crackModel?: THREE.Group; } \| undefined`
|
||
- 返回说明:事件数据、网格和裂缝模型
|
||
|
||
#### `getAllEvents(): Map<number, { event: RuptureEvent; mesh: THREE.Mesh; crackModel?: THREE.Group; }>`
|
||
|
||
- 作用:获取所有事件
|
||
|
||
- 入参:无
|
||
|
||
- 出参:`Map<number, { event: RuptureEvent; mesh: THREE.Mesh; crackModel?: THREE.Group; }>`
|
||
- 返回说明:所有事件的Map
|
||
|
||
#### `getVisibleEventCount(): number`
|
||
|
||
- 作用:获取当前显示的事件数量
|
||
|
||
- 入参:无
|
||
|
||
- 出参:`number`
|
||
- 返回说明:可见事件数量
|
||
|
||
#### `getTotalEventCount(): number`
|
||
|
||
- 作用:获取总事件数量
|
||
|
||
- 入参:无
|
||
|
||
- 出参:`number`
|
||
- 返回说明:总事件数量
|
||
|
||
#### `updateConfig(config: Partial<RuptureEventConfig>): void`
|
||
|
||
- 作用:更新配置
|
||
|
||
- 入参:
|
||
|
||
| 参数名 | 类型 | 必填 | 说明 |
|
||
| --- | --- | --- | --- |
|
||
| `config` | `Partial<RuptureEventConfig>` | 是 | 新配置 |
|
||
|
||
- 出参:`void`
|
||
- 返回说明:无返回值。
|
||
|
||
#### `createEventSphere(event: RuptureEvent): THREE.Mesh<THREE.BufferGeometry<THREE.NormalBufferAttributes, THREE.BufferGeometryEventMap>, THREE.Material<THREE.MaterialEventMap> | THREE.Material<THREE.MaterialEventMap>[], THREE.Object3DEventMap>`
|
||
|
||
- 作用:创建事件球体
|
||
|
||
- 入参:
|
||
|
||
| 参数名 | 类型 | 必填 | 说明 |
|
||
| --- | --- | --- | --- |
|
||
| `event` | `RuptureEvent` | 是 | 破裂事件数据 |
|
||
|
||
- 出参:`THREE.Mesh<THREE.BufferGeometry<THREE.NormalBufferAttributes, THREE.BufferGeometryEventMap>, THREE.Material<THREE.MaterialEventMap> \| THREE.Material<THREE.MaterialEventMap>[], THREE.Object3DEventMap>`
|
||
- 返回说明:球体网格
|
||
|
||
#### `mapEnergyToRadius(energy: number): number`
|
||
|
||
- 作用:将能量映射到半径
|
||
|
||
- 入参:
|
||
|
||
| 参数名 | 类型 | 必填 | 说明 |
|
||
| --- | --- | --- | --- |
|
||
| `energy` | `number` | 是 | 能量值 |
|
||
|
||
- 出参:`number`
|
||
- 返回说明:半径值
|
||
|
||
#### `mapTimeToColor(time: number): THREE.Color`
|
||
|
||
- 作用:将时间映射到颜色(蓝 → 黄 → 红)
|
||
|
||
- 入参:
|
||
|
||
| 参数名 | 类型 | 必填 | 说明 |
|
||
| --- | --- | --- | --- |
|
||
| `time` | `number` | 是 | 时间戳 |
|
||
|
||
- 出参:`THREE.Color`
|
||
- 返回说明:颜色
|
||
|
||
#### `updateTimeRange(time: number): void`
|
||
|
||
- 作用:更新时间范围
|
||
|
||
- 入参:
|
||
|
||
| 参数名 | 类型 | 必填 | 说明 |
|
||
| --- | --- | --- | --- |
|
||
| `time` | `number` | 是 | 时间戳 |
|
||
|
||
- 出参:`void`
|
||
- 返回说明:无返回值。
|
||
|
||
#### `recalculateTimeRange(): void`
|
||
|
||
- 作用:重新计算时间范围
|
||
|
||
- 入参:无
|
||
|
||
- 出参:`void`
|
||
- 返回说明:无返回值。
|
||
|
||
#### `updateAllColors(): void`
|
||
|
||
- 作用:更新所有事件的颜色
|
||
|
||
- 入参:无
|
||
|
||
- 出参:`void`
|
||
- 返回说明:无返回值。
|
||
|
||
## 构造示例
|
||
|
||
- 当前 Demo 中没有直接展示 `RuptureEventManager` 的构造调用。
|
||
|
||
## 函数示例
|
||
|
||
- 当前 Demo 中没有直接展示 `RuptureEventManager` 的公开方法调用。
|
||
|
||
## Demo 参考
|
||
|
||
### `RuptureEvent`
|
||
|
||
以下示例文件中可以看到该 API 的实际调用方式:
|
||
|
||
- `packages/demo/src/disasterFormationPanel/TunnelScene/RuptureEventPanel.vue`
|
||
|