--- 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` | 用于保存 `events` 的映射关系。 | | `config` | `public` | `Required` | 用于保存 `config` 对应的数据。 | | `minTime` | `public` | `number` | 用于保存 `minTime` 对应的数据。 | | `maxTime` | `public` | `number` | 用于保存 `maxTime` 对应的数据。 | | `crackModels` | `public` | `THREE.Group[]` | 用于保存 `crackModels` 的集合数据。 | | `isLoadingModels` | `public` | `boolean` | 用于标记 `isLoadingModels` 的启用状态。 | ### 方法 #### `loadCrackModels(): Promise` - 作用:预加载裂缝模型 - 入参:无 - 出参:`Promise` - 返回说明:返回 Promise,解析结果类型为 `void`。 #### `createCrackModel(event: RuptureEvent, radius: number): THREE.Group | undefined` - 作用:为破裂球创建裂缝模型 - 入参: | 参数名 | 类型 | 必填 | 说明 | | --- | --- | --- | --- | | `event` | `RuptureEvent` | 是 | 破裂事件数据 | | `radius` | `number` | 是 | 球体半径 | - 出参:`THREE.Group \| undefined` - 返回说明:裂缝模型实例 #### `addEvent(event: RuptureEvent): THREE.Mesh, THREE.Material | THREE.Material[], THREE.Object3DEventMap>` - 作用:添加单个破裂事件 - 入参: | 参数名 | 类型 | 必填 | 说明 | | --- | --- | --- | --- | | `event` | `RuptureEvent` | 是 | 破裂事件数据 | - 出参:`THREE.Mesh, THREE.Material \| THREE.Material[], THREE.Object3DEventMap>` - 返回说明:创建的球体网格 #### `addEvents(events: RuptureEvent[]): THREE.Mesh, THREE.Material | THREE.Material[], THREE.Object3DEventMap>[]` - 作用:批量添加破裂事件 - 入参: | 参数名 | 类型 | 必填 | 说明 | | --- | --- | --- | --- | | `events` | `RuptureEvent[]` | 是 | 破裂事件数组 | - 出参:`THREE.Mesh, THREE.Material \| THREE.Material[], 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` - 作用:获取所有事件 - 入参:无 - 出参:`Map` - 返回说明:所有事件的Map #### `getVisibleEventCount(): number` - 作用:获取当前显示的事件数量 - 入参:无 - 出参:`number` - 返回说明:可见事件数量 #### `getTotalEventCount(): number` - 作用:获取总事件数量 - 入参:无 - 出参:`number` - 返回说明:总事件数量 #### `updateConfig(config: Partial): void` - 作用:更新配置 - 入参: | 参数名 | 类型 | 必填 | 说明 | | --- | --- | --- | --- | | `config` | `Partial` | 是 | 新配置 | - 出参:`void` - 返回说明:无返回值。 #### `createEventSphere(event: RuptureEvent): THREE.Mesh, THREE.Material | THREE.Material[], THREE.Object3DEventMap>` - 作用:创建事件球体 - 入参: | 参数名 | 类型 | 必填 | 说明 | | --- | --- | --- | --- | | `event` | `RuptureEvent` | 是 | 破裂事件数据 | - 出参:`THREE.Mesh, THREE.Material \| THREE.Material[], 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`