321 lines
9.4 KiB
Markdown
321 lines
9.4 KiB
Markdown
# ThreatSource Library
|
||
|
||
威胁源仿真库是一个功能强大的.NET类库,专门用于模拟和仿真各种军事威胁源和导弹系统。项目提供 .NET 核心库和 C++/CLI 包装器两种接口,支持复杂的制导系统、干扰对抗和多传感器融合仿真。
|
||
|
||
## 🚀 主要特性
|
||
|
||
### 制导系统
|
||
- **激光制导**:激光半主动、激光驾束、激光编码制导
|
||
- **红外制导**:红外成像、红外指令、红外测角
|
||
- **毫米波制导**:主动雷达、圆锥/螺旋扫描
|
||
- **多模制导**:毫米波/红外双模、激光/红外复合制导
|
||
- **末敏制导**:末敏弹及子弹药制导
|
||
|
||
### 传感器系统
|
||
- 多传感器融合技术
|
||
- 螺旋扫描搜索算法
|
||
- 目标探测和识别
|
||
- RCS特征建模
|
||
- Swerling RCS回波模型
|
||
|
||
### 干扰对抗
|
||
- **激光干扰**:激光诱偏、激光告警
|
||
- **红外干扰**:红外干扰、烟幕弹干扰
|
||
- **毫米波干扰**:毫米波补偿干扰
|
||
- **综合干扰**:多频段同时干扰处理
|
||
|
||
### 仿真环境
|
||
- 大气环境建模(密度、温度、湿度、风速)
|
||
- 地形高程影响
|
||
- 实时仿真数据同步
|
||
- 第三方仿真环境适配
|
||
|
||
## 📊 版本信息
|
||
|
||
**当前版本:** 1.1.22
|
||
**发布日期:** 2025-05-26
|
||
**详细变更:** 请参阅 [CHANGELOG.md](CHANGELOG.md)
|
||
|
||
## 🏗️ 编译和打包
|
||
|
||
### 编译 .NET 库
|
||
|
||
编译 Debug 版本:
|
||
|
||
```bash
|
||
dotnet build ThreatSource/ThreatSource.csproj
|
||
```
|
||
|
||
编译 Release 版本:
|
||
|
||
```bash
|
||
dotnet build ThreatSource/ThreatSource.csproj -c Release
|
||
```
|
||
|
||
### 打包脚本
|
||
|
||
#### 打包 .NET 库
|
||
|
||
使用打包脚本生成 zip 包:
|
||
|
||
```bash
|
||
./scripts/pack_dll.sh
|
||
```
|
||
|
||
生成的文件位于 `publish` 目录下,文件名格式为 `ThreatSourceLibrary-{version}.zip`。
|
||
包含以下文件:
|
||
|
||
- ThreatSource.dll - 主要的库文件
|
||
- ThreatSource.deps.json - 依赖配置文件
|
||
- ThreatSource.xml - API 文档文件
|
||
- AirTransmission.dll - 大气传输计算库
|
||
- AirTransmission.xml - 大气传输计算库API文档文件
|
||
|
||
#### 打包完整项目
|
||
|
||
使用打包脚本生成 zip 包:
|
||
|
||
```bash
|
||
./scripts/pack_all.sh
|
||
```
|
||
|
||
生成的文件位于 `publish` 目录下:
|
||
- `ThreatSourceLibrary-{version}.zip` - .NET库包
|
||
- `ThreatSource-Library.pdf` - API文档文件
|
||
|
||
### 生成文档
|
||
|
||
生成 HTML 和 PDF 格式的文档:
|
||
|
||
```bash
|
||
# 生成 HTML 文档
|
||
docfx build docfx.json
|
||
|
||
# 生成 PDF 文档
|
||
./scripts/generate_pdf.sh
|
||
```
|
||
|
||
生成的文档位于:
|
||
- HTML: `docs/_site/`
|
||
- PDF: `publish/ThreatSource-Library.pdf`
|
||
|
||
## 📁 项目结构
|
||
|
||
```text
|
||
ThreatSourceLibaray/
|
||
├── ThreatSource/ # 核心.NET库
|
||
│ ├── src/
|
||
│ │ ├── Equipment/ # 装备模型(坦克、直升机等)
|
||
│ │ ├── Missile/ # 导弹系统
|
||
│ │ ├── Guidance/ # 制导系统
|
||
│ │ ├── Sensor/ # 传感器系统
|
||
│ │ ├── Indicator/ # 指示器(激光指示器、测角仪等)
|
||
│ │ ├── Jammer/ # 干扰器系统
|
||
│ │ ├── Jammable/ # 可干扰组件
|
||
│ │ ├── Simulation/ # 仿真框架
|
||
│ │ ├── Data/ # 数据处理
|
||
│ │ └── Utils/ # 工具类
|
||
│ ├── data/ # 配置文件(TOML格式)
|
||
│ │ ├── missiles/ # 导弹参数配置
|
||
│ │ ├── equipments/ # 装备参数配置
|
||
│ │ ├── indicators/ # 指示器配置
|
||
│ │ ├── jammers/ # 干扰器配置
|
||
│ │ ├── warners/ # 告警器配置
|
||
│ │ └── weathers/ # 天气环境配置
|
||
│ └── lib/ # 第三方依赖库
|
||
├── ThreatSourceNative/ # C++/CLI包装器(需要CLR支持)
|
||
│ ├── include/
|
||
│ │ └── threat_source.h # C接口头文件
|
||
│ └── src/
|
||
│ └── threat_source.cpp # C++/CLI实现
|
||
├── ThreatSource.Tests/ # 单元测试项目
|
||
├── docs/ # 文档
|
||
│ ├── articles/ # 技术文章
|
||
│ ├── examples/ # 示例代码
|
||
│ │ ├── Integration/ # 集成示例
|
||
│ │ │ └── UnityExample.cs # Unity集成完整示例
|
||
│ │ └── Simulation/ # 仿真示例
|
||
│ └── api/ # API文档
|
||
├── scripts/ # 构建脚本
|
||
│ ├── pack_dll.sh # .NET库打包
|
||
│ ├── pack_all.sh # 完整打包
|
||
│ └── generate_pdf.sh # PDF生成
|
||
└── tools/ # 开发工具
|
||
```
|
||
|
||
## 🔧 开发环境要求
|
||
|
||
### 基础要求
|
||
- **.NET 8.0** 或更高版本
|
||
- **Visual Studio 2022** 或更高版本(原生库开发)
|
||
- **Git** 版本控制
|
||
|
||
### 文档生成
|
||
- **DocFX** 3.0+ (API文档生成)
|
||
- **wkhtmltopdf** (PDF文档生成)
|
||
|
||
### 依赖项
|
||
- **Tomlyn** 0.19.0 - TOML配置文件解析
|
||
- **AirTransmission** - 大气传输计算库
|
||
|
||
## 📖 使用说明
|
||
|
||
### C#/.NET 用户
|
||
|
||
#### 通过NuGet安装(推荐)
|
||
|
||
```bash
|
||
dotnet add package ThreatSource
|
||
```
|
||
|
||
#### 直接引用DLL
|
||
1. 下载最新的 `ThreatSourceLibrary-{version}.zip`
|
||
2. 解压并引用 `ThreatSource.dll`
|
||
3. 确保配置文件位于正确路径
|
||
|
||
#### 基本使用示例
|
||
|
||
```csharp
|
||
using ThreatSource.Missile;
|
||
using ThreatSource.Equipment;
|
||
|
||
// 创建目标
|
||
var tank = new Tank("T72", position, orientation);
|
||
|
||
// 创建导弹
|
||
var missile = new LaserSemiActiveGuidedMissile("Hellfire");
|
||
missile.Launch(launchPosition, targetPosition);
|
||
|
||
// 仿真循环
|
||
while (missile.IsActive)
|
||
{
|
||
missile.Update(deltaTime);
|
||
// 处理仿真逻辑
|
||
}
|
||
```
|
||
|
||
### Unity 集成
|
||
|
||
🎮 **Unity引擎完全支持**:项目提供了专门的Unity集成方案,可以直接在Unity项目中使用。
|
||
|
||
#### 快速开始
|
||
|
||
1. 下载 `ThreatSourceLibrary-{version}.zip`
|
||
2. 将 `ThreatSource.dll` 复制到 Unity 项目的 `Assets/Plugins/` 目录
|
||
3. 参考 `docs/examples/Integration/UnityExample.cs` 示例代码
|
||
4. 在Unity脚本中直接使用库的API
|
||
|
||
#### 详细集成指导
|
||
|
||
完整的Unity集成教程、示例代码和最佳实践,请参阅:
|
||
📖 **[Unity集成指南](docs/examples/Integration/README.md#unity集成)**
|
||
|
||
### C++ 用户
|
||
|
||
⚠️ **重要提醒**:ThreatSourceNative 是 C++/CLI 包装器,**必须在支持 CLR 的环境中运行**,不是传统的原生 C++ 库。
|
||
|
||
#### 使用 C++/CLI 包装器
|
||
1. 下载 `ThreatSourceNative-{version}.zip`
|
||
2. 将 `bin/` 目录下所有DLL复制到程序目录
|
||
3. 项目配置要求:
|
||
- **CLR 支持**:启用 (`/clr`)
|
||
- **平台工具集**:Visual Studio 2022 (v143)
|
||
- **.NET 目标框架**:net8.0 或更高
|
||
4. 包含头文件:`#include "threat_source.h"`
|
||
|
||
```cpp
|
||
#include "threat_source.h"
|
||
|
||
int main() {
|
||
// 初始化仿真
|
||
TS_CreateSimulation();
|
||
|
||
// 创建导弹实例
|
||
TS_CreateMissile("missile1", 0, 0, 0, 100, 0, 0,
|
||
300, 50, 60, 8000, 45.0);
|
||
|
||
// 激活并发射
|
||
TS_ActivateMissile("missile1");
|
||
TS_FireMissile("missile1");
|
||
|
||
return 0;
|
||
}
|
||
```
|
||
|
||
#### Unity 兼容性说明
|
||
⚠️ **Unity 不支持 C++/CLI 混合模式程序集**。如需在 Unity 中使用,建议:
|
||
1. 直接使用 .NET 库:引用 `ThreatSource.dll`
|
||
2. 创建 Unity Package 形式分发
|
||
3. 如需原生性能,考虑重新设计为纯 C++ + P/Invoke 架构
|
||
|
||
#### 纯 C++ 环境说明
|
||
如需在不支持 CLR 的纯 C++ 环境中使用,当前的 ThreatSourceNative **无法直接支持**。建议:
|
||
1. 通过进程间通信调用 .NET 库
|
||
2. 重新设计为纯 C++ + P/Invoke 接口
|
||
3. 考虑使用其他跨语言调用方案(如 COM)
|
||
|
||
### 配置文件使用
|
||
|
||
项目使用TOML格式的配置文件,位于 `data/` 目录:
|
||
|
||
```toml
|
||
# missiles/hellfire.toml
|
||
[basic]
|
||
name = "AGM-114 Hellfire"
|
||
type = "LaserSemiActive"
|
||
mass = 45.0
|
||
length = 1.6
|
||
|
||
[guidance]
|
||
max_range = 8000.0
|
||
terminal_guidance = true
|
||
proportional_gain = 3.0
|
||
```
|
||
|
||
## 📚 示例和文档
|
||
|
||
- **集成示例**:[docs/examples/Integration/](docs/examples/Integration/)
|
||
- **仿真示例**:[docs/examples/Simulation/](docs/examples/Simulation/)
|
||
- **API文档**:[在线文档](docs/api/) 或 `docs/_site/`
|
||
- **技术文章**:[docs/articles/](docs/articles/)
|
||
|
||
## 🔄 持续集成
|
||
|
||
项目支持自动化构建和测试:
|
||
|
||
```bash
|
||
# 运行所有测试
|
||
dotnet test ThreatSource.Tests/
|
||
|
||
# 代码覆盖率分析
|
||
dotnet test --collect:"XPlat Code Coverage"
|
||
```
|
||
|
||
## 🤝 贡献指南
|
||
|
||
1. Fork 项目仓库
|
||
2. 创建功能分支:`git checkout -b feature/amazing-feature`
|
||
3. 提交更改:`git commit -m 'Add amazing feature'`
|
||
4. 推送分支:`git push origin feature/amazing-feature`
|
||
5. 提交 Pull Request
|
||
|
||
## 📄 许可证
|
||
|
||
本项目基于 MIT License 开源协议。详情请查看 [LICENSE](LICENSE) 文件。
|
||
|
||
## 📞 技术支持
|
||
|
||
- **问题反馈**:[Issues](../../issues)
|
||
- **功能请求**:[Feature Requests](../../issues/new)
|
||
- **文档反馈**:[Documentation Issues](../../issues/new)
|
||
- **Unity集成支持**:Unity相关问题请在Issues中标注"Unity"标签
|
||
- **架构选择指导**:
|
||
- **.NET项目**:直接使用ThreatSource.dll
|
||
- **Unity项目**:推荐.NET库 + Unity适配器方案
|
||
- **纯C++项目**:当前C++/CLI包装器需要CLR支持,如需真正原生支持请提交Feature Request
|
||
|
||
---
|
||
|
||
**最后更新:** 2025-05-26
|
||
**文档版本:** 1.1.22
|