13 KiB
13 KiB
使用说明
版本:1.1.22
安装和使用
C#/.NET 版本
1. 下载和部署
- 下载 ThreatSourceLibrary 包并解压
- 按照以下标准结构部署文件:
MyApplication/
├── MyApp.exe # 您的应用程序
├── lib/ # DLL库目录
│ ├── ThreatSource.dll # 主要的库文件
│ ├── ThreatSource.deps.json # 依赖配置文件
│ ├── ThreatSource.xml # API 文档文件
│ └── AirTransmission.dll # 依赖库
└── data/ # 配置数据目录
├── missiles/ # 导弹配置文件
│ ├── laser_semi_active/
│ ├── laser_beam_rider/
│ ├── ir_command/
│ ├── ir_imaging/
│ ├── mmw/
│ ├── terminal_sensitive/
│ └── composite/
├── indicators/ # 指示器配置文件
│ ├── laser_designators/
│ ├── laser_beam_riders/
│ └── ir_trackers/
├── equipments/ # 目标设备配置文件
├── jammers/ # 干扰机配置文件
├── weathers/ # 天气配置文件
└── warners/ # 告警器配置文件
- 在 Visual Studio 中添加引用:
- 右键项目 -> 添加 -> 引用
- 浏览 -> 选择 lib/ThreatSource.dll
2. 数据配置管理
威胁源库使用智能路径解析系统,会自动在DLL上级目录查找 data 文件夹。您也可以手动指定数据路径:
// 使用自动路径解析(推荐)
var dataManager = new ThreatSourceDataManager();
// 或手动指定数据路径
var dataManager = new ThreatSourceDataManager("C:/MyApp/configs");
3. 基本使用示例
using ThreatSource.Simulation;
using ThreatSource.Data;
using ThreatSource.Equipment;
using ThreatSource.Utils;
class Program
{
static void Main()
{
try
{
// 1. 创建仿真管理器
var simulationManager = new SimulationManager();
// 2. 创建数据管理器和工厂
var dataManager = new ThreatSourceDataManager();
var factory = new ThreatSourceFactory(dataManager, simulationManager);
// 3. 创建目标
var targetInitialState = new KinematicState
{
Position = new Vector3D(1000, 0, 100),
Orientation = new Orientation(0, 0, 0),
Speed = 0
};
var targetProperties = new EquipmentProperties
{
InfraredRadiationIntensity = 100.0,
MillimeterWaveRadiationIntensity = 50.0
};
var target = new Tank("target1", targetProperties, targetInitialState, simulationManager);
// 4. 创建导弹(使用工厂模式)
var launchParams = new KinematicState
{
Position = new Vector3D(0, 0, 0),
Orientation = new Orientation(0, 0, 0),
Speed = 100
};
// 使用配置文件中的导弹型号
var missile = factory.CreateMissile("missile1", "lsgm_001", "target1", launchParams);
// 5. 注册实体到仿真管理器
simulationManager.RegisterEntity(target.Id, target);
simulationManager.RegisterEntity(missile.Id, missile);
// 6. 激活实体
target.Activate();
missile.Activate();
// 7. 发射导弹
missile.Fire();
// 8. 启动仿真
simulationManager.StartSimulation(0.01); // 10ms时间步长
// 9. 仿真主循环
double totalTime = 0;
double maxTime = 60; // 最大仿真时间60秒
while (missile.IsActive && totalTime < maxTime)
{
simulationManager.Update(0.01);
totalTime += 0.01;
// 可选:输出状态信息
if ((int)(totalTime * 100) % 100 == 0) // 每秒输出一次
{
Console.WriteLine($"时间: {totalTime:F1}s, 导弹位置: {missile.KState.Position}");
}
}
// 10. 停止仿真
simulationManager.StopSimulation();
}
catch (Exception ex)
{
Console.WriteLine($"错误: {ex.Message}");
}
}
}
C++版本
C++项目的使用方式(CLR集成):
-
配置项目属性:
- C/C++ -> 常规 -> 公共语言运行时支持:/clr
- 常规 -> 平台工具集:Visual Studio 2022 (v143)
- 常规 -> .NET目标框架:net8.0
-
引用 ThreatSource.dll
示例代码:
using namespace System;
using namespace ThreatSource::Simulation;
using namespace ThreatSource::Data;
int main() {
try {
// 创建仿真管理器和数据管理器
auto manager = gcnew SimulationManager();
auto dataManager = gcnew ThreatSourceDataManager();
auto factory = gcnew ThreatSourceFactory(dataManager, manager);
// 创建发射参数
auto launchParams = gcnew KinematicState();
launchParams->Position = Vector3D(0, 0, 0);
launchParams->Orientation = Orientation(0, 0, 0);
launchParams->Speed = 100;
// 使用工厂创建导弹
auto missile = factory->CreateMissile("missile1", "lsgm_001", "target1", launchParams);
manager->RegisterEntity(missile->Id, missile);
// 激活并发射导弹
missile->Activate();
missile->Fire();
// 仿真主循环
double deltaTime = 0.01;
while (missile->IsActive) {
manager->Update(deltaTime);
}
return 0;
}
catch (Exception^ e) {
Console::WriteLine("错误: {0}", e->Message);
return 1;
}
}
支持的导弹类型
威胁源库支持以下导弹类型:
1. 激光半主动制导导弹 (LaserSemiActiveGuidance)
- 工作原理:利用目标反射的激光能量进行制导
- 配置文件:
data/missiles/laser_semi_active/ - 制导特点:需要激光目标指示器持续照射目标
2. 激光驾束制导导弹 (LaserBeamRiderGuidance)
- 工作原理:沿着激光束路径飞行
- 配置文件:
data/missiles/laser_beam_rider/ - 制导特点:跟踪激光束中心线,使用PID控制
3. 红外指令制导导弹 (InfraredCommandGuidance)
- 工作原理:通过红外信号接收指令进行制导
- 配置文件:
data/missiles/ir_command/ - 制导特点:导弹发射红外信号,地面测角仪跟踪并发送指令
4. 红外成像末制导导弹 (InfraredImagingTerminalGuidance)
- 工作原理:末段使用红外成像进行自主制导
- 配置文件:
data/missiles/ir_imaging/ - 制导特点:自主目标识别和跟踪
5. 毫米波末制导导弹 (MillimeterWaveTerminalGuidance)
- 工作原理:末段使用毫米波雷达进行自主制导
- 配置文件:
data/missiles/mmw/ - 制导特点:全天候作战能力,抗干扰性强
6. 末敏弹 (TerminalSensitiveMissile)
- 工作原理:母弹释放子弹,子弹螺旋扫描攻击目标
- 配置文件:
data/missiles/terminal_sensitive/ - 制导特点:多传感器融合,智能目标识别
7. 复合制导导弹 (CompositeGuidance)
- 工作原理:集成多种制导方式,可串行或并行工作
- 配置文件:
data/missiles/composite/ - 制导特点:高可靠性,多重制导保障
配置文件格式
威胁源库使用TOML格式的配置文件。以下是激光半主动制导导弹的配置示例:
# 激光半主动制导导弹配置示例
Type = "LaserSemiActiveGuidance"
[Name]
zh = "激光半主动制导导弹-001"
en = "Laser Semi-Active Guidance Missile-001"
[Properties]
Type = "LaserSemiActiveGuidance"
MaxSpeed = 800.0 # 最大速度 (m/s)
MaxFlightTime = 60.0 # 最大飞行时间 (秒)
MaxFlightDistance = 4000.0 # 最大飞行距离 (米)
MaxAcceleration = 50.0 # 最大加速度 (m/s²)
ProportionalNavigationCoefficient = 3.0 # 比例导引系数
LaunchAcceleration = 100.0 # 发射加速度 (m/s²)
MaxEngineBurnTime = 0.1 # 发动机燃烧时间 (秒)
CruiseTime = 5.0 # 巡航时间 (秒)
Mass = 22.0 # 质量 (kg)
ExplosionRadius = 5.0 # 爆炸半径 (米)
HitProbability = 0.9 # 命中概率
SelfDestructHeight = 0.0 # 自毁高度 (米)
[LaserSemiActiveGuidanceConfig]
MaxDetectionRange = 5000.0 # 最大探测距离 (米)
FieldOfViewAngle = 30.0 # 视场角 (度)
LockThreshold = 1.0e-12 # 锁定阈值 (瓦特)
ReflectionCoefficient = 0.2 # 反射系数
TargetReflectiveArea = 1.0 # 目标反射面积 (平方米)
基本用法
初始化仿真系统
// 创建仿真管理器
var simulationManager = new SimulationManager();
// 创建数据管理器(自动路径解析)
var dataManager = new ThreatSourceDataManager();
// 创建工厂
var factory = new ThreatSourceFactory(dataManager, simulationManager);
创建和配置实体
// 创建目标
var targetState = new KinematicState
{
Position = new Vector3D(1000, 0, 100),
Orientation = new Orientation(0, 0, 0),
Speed = 0
};
var targetProperties = new EquipmentProperties
{
InfraredRadiationIntensity = 100.0,
MillimeterWaveRadiationIntensity = 50.0
};
var target = new Tank("target1", targetProperties, targetState, simulationManager);
// 创建导弹(从配置文件)
var launchParams = new KinematicState
{
Position = new Vector3D(0, 0, 0),
Orientation = new Orientation(0, 0, 0),
Speed = 100
};
var missile = factory.CreateMissile("missile1", "lsgm_001", "target1", launchParams);
运行仿真
// 注册实体
simulationManager.RegisterEntity(target.Id, target);
simulationManager.RegisterEntity(missile.Id, missile);
// 激活实体
target.Activate();
missile.Activate();
// 发射导弹
missile.Fire();
// 启动仿真
simulationManager.StartSimulation(0.01);
// 仿真循环
while (missile.IsActive)
{
simulationManager.Update(0.01);
}
// 停止仿真
simulationManager.StopSimulation();
事件处理
// 订阅导弹命中事件
simulationManager.SubscribeToEvent<TargetHitEvent>(evt =>
{
Console.WriteLine($"目标 {evt.TargetId} 被导弹 {evt.SenderId} 命中");
});
// 订阅导弹爆炸事件
simulationManager.SubscribeToEvent<MissileExplodeEvent>(evt =>
{
Console.WriteLine($"导弹在位置 {evt.Position} 爆炸");
});
数据管理
获取可用配置
var dataManager = new ThreatSourceDataManager();
// 获取所有可用的导弹型号
var availableMissiles = dataManager.GetAvailableMissiles();
foreach (var missileId in availableMissiles)
{
Console.WriteLine($"可用导弹: {missileId}");
}
// 获取特定导弹的配置
var missileData = dataManager.GetMissile("lsgm_001");
Console.WriteLine($"导弹类型: {missileData.Type}");
Console.WriteLine($"最大速度: {missileData.Properties.MaxSpeed} m/s");
自定义数据路径
// 指定自定义数据路径
var customDataManager = new ThreatSourceDataManager("/path/to/custom/data");
// 或在运行时切换
var dataManager = new ThreatSourceDataManager();
// 数据会自动从 DLL上级目录/data 加载
部署要求
最低系统要求
- .NET 8.0 或更高版本
- Windows 10 或更高版本(推荐)
- 至少 100MB 可用磁盘空间
依赖项
- Tomlyn (TOML解析库)
- AirTransmission (空气传播计算库)
部署检查清单
- ✅ 确保DLL文件在正确位置
- ✅ 确保数据文件按标准结构组织
- ✅ 确保配置文件格式正确(TOML)
- ✅ 确保应用程序有读取数据目录的权限
- ✅ 测试自动路径解析功能
第三方仿真环境集成
更多示例
更多详细示例和高级用法请参考:
故障排除
常见问题
-
数据文件未找到
- 检查数据目录结构是否正确
- 确认DLL和数据目录的相对位置
- 查看调试输出中的路径解析信息
-
配置文件解析错误
- 检查TOML文件语法
- 确认必需字段是否存在
- 查看错误日志获取详细信息
-
导弹创建失败
- 确认导弹型号在配置文件中存在
- 检查配置文件的完整性
- 验证制导系统配置是否正确