diff --git a/docs/design/architecture/总体架构设计.md b/docs/design/architecture/总体架构设计.md index 4c31e66..902ae76 100644 --- a/docs/design/architecture/总体架构设计.md +++ b/docs/design/architecture/总体架构设计.md @@ -542,11 +542,11 @@ SimulationEngine MunitionEntity 销毁 │ ▼ -云团扩散膨胀(调用第三方 DLL 扩散模型) +云团扩散膨胀(三阶段模型:爆轰→湍流→高斯) │ 持续膨胀 + 消散计时 ▼ 无人机进入云团范围 - │ 施加毁伤(调用第三方 DLL 毁伤模型) + │ 施加毁伤(IDamageModel 接口,三种机制自主实现) │ 吸入式灭火 / 爆燃式 / 吸入式爆炸 ▼ 无人机被摧毁 / 存活 @@ -555,60 +555,48 @@ SimulationEngine Unity 渲染毁伤效果(尾焰异常、姿态失控、坠落) ``` -### 5.3 仿真 Tick 流程(8 阶段) +### 5.3 仿真 Tick 流程 ``` -1. 【探测阶段】 - FOR EACH 探测设备: - ├─ 扫描场景内无人机(距离 < DetectionRadius) - └─ 发现目标 → EventQueue.Enqueue(TargetDetected) +1. 【发射阶段】 + 按 FireSchedule 执行: + ├─ SimulationTime ≥ FireTime → 平台发射弹药 + └─ 触发 OnMunitionLaunched 事件 -2. 【火控决策阶段】 - 处理 TargetDetected 事件: - ├─ 分配目标给可用搭载平台 - ├─ 空基平台:计算拦截航路,飞向投放点 - └─ 地基平台:计算射击诸元(发射角、方位角) - -3. 【发射阶段】 - FOR EACH 搭载平台: - ├─ 满足发射条件 & 冷却完毕 → 生成 MunitionEntity - │ ├─ 空基:初始速度 = 平台速度,初始位置 = 投放点 - │ └─ 地基:初始速度 = MuzzleVelocity,按抛物线计算 - └─ 进入冷却倒计时 - -4. 【弹药飞行】 +2. 【弹药飞行 → 云团生成】 FOR EACH MunitionEntity: - ├─ 空基弹药:自由落体/滑翔至云团生成高度 - ├─ 地基弹药:抛物线位置 = f(初速, 发射角, t) - └─ 到达释放条件 → 生成 CloudEntity → MunitionEntity 销毁 - └─ EventQueue.Enqueue(CloudGenerated) + ├─ 抛物线弹道 / 自由落体 + └─ 到达释放高度 → 生成 CloudEntity → 触发 OnCloudGenerated -5. 【云团演化】(调用第三方 DLL) +3. 【云团演化】 FOR EACH CloudEntity: - ├─ 扩散膨胀:radius = DLL.Dispersion.Update(deltaTime, config) - ├─ 更新粒子系统参数(半径、透明度、颜色 → 写入 StateData) - └─ 剩余时间 ≤ 0 → 销毁 + ├─ GaussianPuffDispersion.Tick():三阶段扩散 + ├─ 更新粒子参数(半径、透明度 → 写入 StateData) + └─ 消散条件满足 → 移除 -6. 【毁伤判定】(调用第三方 DLL) - DOUBLE LOOP DroneEntity × CloudEntity: - ├─ 无人机坐标 ∈ 云团球体? - ├─ 是 → damage = DLL.DamageModel.Calculate(DroneType, AerosolType, exposureTime) - ├─ 更新 drone.HP -= damage - ├─ 更新 drone.DamageStage(Normal → EngineAnomaly → AttitudeLoss → Destroyed) - └─ HP ≤ 0 → EventQueue.Enqueue(DroneDestroyed) +4. 【毁伤判定】 + FOR EACH DroneEntity × CloudEntity: + ├─ 无人机坐标 ∈ 云团有效范围? + ├─ 是 → IDamageModel.CalculateDamage() + ├─ drone.HP -= damage + └─ HP ≤ 0 → 触发 OnDroneDestroyed -7. 【无人机移动】 +5. 【无人机移动】 FOR EACH 存活 DroneEntity: - ├─ 沿航路点线性插值移动 - ├─ 实际位移 += 风速矢量 × deltaTime - ├─ 到达航路点 → EventQueue.Enqueue(WaypointReached) - ├─ 到达最后一个航路点 → EventQueue.Enqueue(DroneReachedTarget) - └─ 编队/蜂群模式决定集群排列 + ├─ 沿航路点线性插值 + ├─ 风偏影响 + └─ 到达终点 → 触发 OnDroneReachedTarget -8. 【管控区域判定】★NEW +6. 【平台冷却】 + FOR EACH PlatformEntity:Cooldown -= dt + +7. 【管控区域判定】 FOR EACH 存活 DroneEntity: - ├─ 无人机坐标 ∈ 任一 ControlZone 多边形体积? - └─ 是 → EventQueue.Enqueue(ZoneIntruded) → 标记该无人机任务失败 + ├─ Point-in-Polygon 判定 + └─ 侵入 → 触发 OnZoneIntruded + +8. 【结束判定】 + 所有无人机 Status ≠ Flying → 触发 OnSimulationEnded 9. 【结束判定】 ├─ 所有无人机 (被摧毁 OR 到达目标 OR 侵入管控区) → SimulationEnd @@ -694,9 +682,9 @@ Unity 渲染毁伤效果(尾焰异常、姿态失控、坠落) - 粒子系统参数(半径、透明度、颜色 → 输出到 StateData) 行为(委托第三方 DLL): - - 扩散膨胀:DLL.Dispersion.Update(deltaTime, 环境参数, 释放参数) + - 扩散膨胀:GaussianPuffDispersion.Tick()(三阶段) - 消散计时 - - 毁伤判定:DLL.DamageModel.Calculate(DroneType, AerosolType, exposureTime) + - 毁伤判定:IDamageModel.CalculateDamage()(三种机制自主实现) ``` ---