ThreatSourceLibaray/README.md

321 lines
9.4 KiB
Markdown
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

# 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