Go to file
2024-10-24 12:07:23 +08:00
Docs 简化了导弹基类设计,将自毁和爆炸的状态判断,放到子类中处理。给所有文档加上注释 2024-10-24 11:56:37 +08:00
Models 修改两个导弹的状态获取方法,将导弹状态和导弹引导系统状态分开获取 2024-10-24 12:07:23 +08:00
SimulationEnvironment 简化了导弹基类设计,将自毁和爆炸的状态判断,放到子类中处理。给所有文档加上注释 2024-10-24 11:56:37 +08:00
.cursorignore 简化了导弹基类设计,将自毁和爆炸的状态判断,放到子类中处理。给所有文档加上注释 2024-10-24 11:56:37 +08:00
.cursorrules 重新提交全部代码, 去掉无用文件 2024-10-19 14:26:26 +08:00
.gitignore 修改了.gitignore文件, 删除了无用文件 2024-10-19 14:27:10 +08:00
ActiveProtect.csproj 重新提交全部代码, 去掉无用文件 2024-10-19 14:26:26 +08:00
ActiveProtect.sln 重新提交全部代码, 去掉无用文件 2024-10-19 14:26:26 +08:00
Program.cs 简化了导弹基类设计,将自毁和爆炸的状态判断,放到子类中处理。给所有文档加上注释 2024-10-24 11:56:37 +08:00
README.md 简化了导弹运行阶段处理机制,导弹基类不再负责导弹的运行阶段,改由各子类处理;完善了末敏弹运行过程 2024-10-21 22:51:58 +08:00

ActiveProtect 仿真系统

ActiveProtect 是一个用于模拟激光制导导弹和防御系统的仿真环境。

功能特性

  • 激光半主动制导导弹仿真
  • 激光驾束制导导弹仿真
  • 坦克和激光告警器仿真
  • 激光干扰器仿真
  • 可扩展的仿真框架

Unity 兼容性

本项目设计时考虑了与 Unity 游戏引擎的兼容性, 使用C# 9.0 语法。以下是在 Unity 中使用本项目的注意事项:

  1. 向量和数学运算:本项目使用自定义的 Vector3D 类。在 Unity 中,您可以将其替换为 Unity 的 Vector3 类。

  2. 仿真更新Unity 使用 MonoBehaviourUpdate 方法进行每帧更新。您可以创建一个 SimulationManager 脚本,并在其 Update 方法中调用仿真系统的更新逻辑。

  3. 可视化Unity 提供了强大的 3D 渲染能力。您可以为每个仿真元素(如导弹、坦克等)创建相应的 Unity 游戏对象,并在每帧更新其位置和旋转。

  4. 输入处理:将键盘/鼠标输入处理逻辑替换为 Unity 的输入系统(如 Input.GetKey() 等)。

  5. 协程Unity 支持协程,可用于实现某些异步操作或时间相关的功能。

  6. 物理系统:如果需要更复杂的物理模拟,可以考虑使用 Unity 的物理引擎替代当前的简化物理模型。

  7. 事件系统Unity 有自己的事件系统,您可能需要调整当前的事件处理机制以更好地与 Unity 集成。

  8. 性能优化:在 Unity 中,您可以使用 Unity Profiler 来监控和优化性能。

通过这些调整,您应该能够将 ActiveProtect 仿真系统顺利集成到 Unity 项目中,从而获得更好的可视化效果和交互体验。

使用说明

  1. 克隆仓库到本地
  2. 使用 Visual Studio 或其他 C# IDE 打开解决方案
  3. 编译并运行项目

贡献指南

欢迎提交 Pull Requests 来改进这个项目。在提交之前,请确保您的代码符合项目的编码规范,并且通过了所有的单元测试。

许可证

本项目采用 MIT 许可证。详情请见 LICENSE 文件。

仿真运行流程(这个 Mermaid 图表会在支持 Mermaid 的 Markdown 查看器中渲染为一个流程图)

graph TD
    A[开始仿真] --> B[初始化SimulationManager]
    B --> C[加载SimulationConfig]
    C --> D[创建仿真元素]
    D --> E[开始仿真循环]
    E --> F{是否结束仿真?}
    F -->|否| G[更新所有元素]
    G --> H[收集数据]
    H --> I[处理事件]
    I --> E
    F -->|是| J[结束仿真]
    J --> K[评估结果]
    K --> L[生成报告]
    L --> M[结束]

反坦克导弹仿真系统

本项目旨在模拟反坦克导弹的飞行过程和攻击效果。

反坦克导弹飞行阶段

反坦克导弹的飞行过程通常可以分为以下几个主要阶段:

  1. 发射阶段

    • 导弹从发射装置或发射管中被推出
    • 火箭发动机点火,提供初始推力
  2. 加速阶段

    • 导弹迅速加速到巡航速度
    • 可能会抛掉一些辅助推进装置(如有)
  3. 巡航阶段

    • 导弹保持相对稳定的速度飞向<EFBFBD><EFBFBD>
    • 根据导引系统类型,可能会进行中途修正
  4. 终端制导阶段

    • 导弹接近目标,进入最后的制导阶段
    • 可能会启动终端制导系统,如毫米波雷达或红外成像系统
  5. 攻击阶段

    • 导弹进行最后的机动,以最佳角度接近目标
    • 可能会启动穿甲弹头或预制破片
  6. 爆炸阶段

    • 导弹击中目标并引爆
    • 根据弹头类型,可能是穿甲、破片或破片-燃烧等效果

在仿真中,这些阶段被纳入计算,每个阶段可能有不同的物理特性和行为模式。例如,加速阶段可能有较大的加速度,而巡航阶段则保持恒定速度。终端制导阶段可能会有更频繁的方向调整。

项目结构

ActiveProtect/

├── Models/ # 仿真模型目录
 ├── BasicGuidanceSystem.cs #          基础制导系统类
 ├── ILaserIlluminatable.cs #          可被激光照射的接口定义
 ├── LaserBeamRider.cs #               激光驾束仪类
 ├── LaserBeamRiderGuidanceSystem.cs # 激光驾束制导系统类
 ├── LaserBeamRiderMissile.cs #        激光驾束导弹类
 ├── LaserDesignator.cs #              激光指示器类
 ├── LaserJammer.cs #                  激光干扰器类
 ├── LaserSemiActiveGuidedMissile.cs # 激光半主动制导导弹类
 ├── LaserWarner.cs #                  激光告警器类
 ├── MissileClass.cs #                 导弹基类
 └── Tank.cs #                         坦克模型类

├── SimulationEnvironment/ #            仿真环境目录
 ├── SimulationConfig.cs #             仿真配置类
 ├── SimulationElement.cs #            仿真元素基类
 ├── SimulationEvents.cs #             仿真事件定义类
 └── SimulationManager.cs #            仿真管理器类

├── Program.cs #                        程序入口点
├── README.md #                         项目说明文档
└── Design.md #                         设计文档

如何运行

  1. 确保你的系统已安装 .NET 6.0。

  2. 在终端中导航到项目根目录。

  3. 运行以下命令来构建项目:

    dotnet build
    
  4. 运行以下命令来启动仿真:

    dotnet run
    

注意事项

  • 当前仿真使用简化模型,可能无法完全反映真实世界的复杂性。
  • 仿真结果仅供参考,不应用于实际军事决策。

比例导引系数N的选择

在导弹制导系统中比例导引系数N是一个关键参数它直接影响导弹的性能和行为。在我们的仿真系统中用户可以根据不同的场景需求调整这个参数。

N 值的影响

  • N = 3:这是一个较为保守的选择,适合大多数情况。它提供了良好的稳定性和能源效率,但可能在应对高机动性目标时表现不佳。
  • N = 4:这个值提供了更积极的制导,适合需要更高机动性的场景。它能更快地响应目标的变化,但可能会增加能源消耗。
  • N = 5:这是一个更激进的选择,提供最高的机动性,但也带来了更大的能源消耗和可能的过度修正。

选择 N 值的考虑因素

  1. 导弹类型:大型、长程导弹通常使用较小的 N 值,而小型、短程导弹可以使用较大的 N 值。
  2. 目标特性:对付高速、高机动性目标时,可能需要较大的 N 值。
  3. 作战环境:在复杂环境中,可能需要更大的 N 值来应对突发情况。
  4. 能源限制:如果导弹燃料有限,较小的 N 值可以帮助节省能源。
  5. 制导系统精度:精度较高的系统可以使用较小的 N 值,而精度较低的系统可能需要较大的 N 值来补偿误差。
  6. 任务要求:精确打击任务可能需要较大的 N 值,而区域防御任务可能使用较小的 N 值。

在我们的仿真系统中,用户可以通过调整 ProportionalNavigationCoefficient 参数来设置不同的 N 值,以模拟各种实际情况下的导弹行为。我们建议用户尝试不同的 N 值,观察其对导弹性能的影响,以找到最适合特定场景的设置。

仿真时间步长

仿真时间步长是仿真系统中的一个重要参数,它直接影响仿真结果的准确性和计算效率。在我们的仿真系统中,用户可以通过调整 SimulationTimeStep 参数来设置不同的仿真时间步长。

  1. SimulationTimeStep = 0.01:这是最短的时间步长,仿真精确度最高,但计算成本也最高。
  2. SimulationTimeStep = 0.025:这是默认的时间步长,适用于大多数导弹和防御系统。(激光驾束制导导弹至少要用此步长)
  3. SimulationTimeStep = 0.05:这是另一个常用的步长,适用于一些需要较低精度的场景。
  4. SimulationTimeStep = 0.1:这是较低的时间步长,仿真精确度很低,用于快速验证。

用户可以根据具体需求选择合适的时间步长,以平衡仿真精度和计算效率。