141 lines
5.8 KiB
C#
141 lines
5.8 KiB
C#
using System;
|
||
using System.Threading;
|
||
using ActiveProtect.SimulationEnvironment;
|
||
using ActiveProtect.Models;
|
||
|
||
namespace ActiveProtect
|
||
{
|
||
class Program
|
||
{
|
||
static void Main(string[] args)
|
||
{
|
||
// 创建仿真配置
|
||
var config = new SimulationConfig
|
||
{
|
||
TankConfigs =
|
||
[
|
||
new() {
|
||
InitialPosition = new Vector3D(100, 0, 100),
|
||
InitialOrientation = new Orientation(0, 0, 0),
|
||
InitialSpeed = 0,
|
||
MaxSpeed = 20,
|
||
MaxArmor = 100,
|
||
HasLaserWarner = false,
|
||
HasLaserJammer = true
|
||
}
|
||
],
|
||
LaserWarnerConfig = new LaserWarnerConfig
|
||
{
|
||
AlarmDuration = 5.0
|
||
},
|
||
LaserJammerConfig = new LaserJammerConfig
|
||
{
|
||
MaxJammingCooldown = 5.0,
|
||
MaxJammingPower = 10000.0,
|
||
InitialJammingPower = 4000.0,
|
||
PowerIncreaseRate = 2000.0
|
||
},
|
||
MissileConfigs =
|
||
[
|
||
// 标准导弹配置
|
||
new() {
|
||
InitialPosition = new Vector3D(1500, 200, 100),
|
||
InitialOrientation = new Orientation(Math.PI, -0.1, 0),
|
||
InitialSpeed = 0,
|
||
MaxSpeed = 300,
|
||
TargetIndex = 0,
|
||
MaxFlightTime = 0.5,
|
||
MaxFlightDistance = 3000,
|
||
ThrustAcceleration = 50,
|
||
MaxEngineBurnTime = 10,
|
||
MaxAcceleration = 100,
|
||
ProportionalNavigationCoefficient = 3,
|
||
StageConfig = FlightStageConfig.StandardMissile,
|
||
DistanceParams = new MissileDistanceParams(500, 100, 20),
|
||
Mass = 50,
|
||
Type = MissileType.StandardMissile,
|
||
},
|
||
// 红外指令制导导弹配置
|
||
new() {
|
||
InitialPosition = new Vector3D(2000, 150, 100),
|
||
InitialOrientation = new Orientation(Math.PI, -0.15, 0),
|
||
InitialSpeed = 0,
|
||
MaxSpeed = 300,
|
||
TargetIndex = 0,
|
||
MaxFlightTime = 1,
|
||
MaxFlightDistance = 5000,
|
||
ThrustAcceleration = 50,
|
||
MaxEngineBurnTime = 10,
|
||
MaxAcceleration = 100,
|
||
ProportionalNavigationCoefficient = 3,
|
||
StageConfig = FlightStageConfig.InfraredCommandGuidance,
|
||
DistanceParams = new MissileDistanceParams(500, 100, 20),
|
||
Mass = 50,
|
||
Type = MissileType.InfraredCommandGuidance
|
||
},
|
||
// 毫米波终端制导导弹配置
|
||
new() {
|
||
InitialPosition = new Vector3D(2000, 50, 100),
|
||
InitialOrientation = new Orientation(Math.PI, -0.05, 0),
|
||
InitialSpeed = 0,
|
||
MaxSpeed = 300,
|
||
TargetIndex = 0,
|
||
MaxFlightTime = 0.5,
|
||
MaxFlightDistance = 3000,
|
||
ThrustAcceleration = 50,
|
||
MaxEngineBurnTime = 10,
|
||
MaxAcceleration = 100,
|
||
ProportionalNavigationCoefficient = 3,
|
||
StageConfig = FlightStageConfig.MillimeterWaveTerminalGuidance,
|
||
DistanceParams = new MissileDistanceParams(500, 100, 20),
|
||
Mass = 50,
|
||
Type = MissileType.MillimeterWaveTerminalGuidance
|
||
},
|
||
// 激光半主动制导导弹配置
|
||
new() {
|
||
InitialPosition = new Vector3D(2000, 150, 100),
|
||
InitialOrientation = new Orientation(Math.PI, -0.12, 0),
|
||
InitialSpeed = 700,
|
||
MaxSpeed = 700,
|
||
TargetIndex = 0,
|
||
MaxFlightTime = 10,
|
||
MaxFlightDistance = 5000,
|
||
ThrustAcceleration = 0,
|
||
MaxEngineBurnTime = 0,
|
||
MaxAcceleration = 100,
|
||
ProportionalNavigationCoefficient = 3,
|
||
StageConfig = FlightStageConfig.LaserSemiActiveGuidedMissile,
|
||
DistanceParams = new MissileDistanceParams(500, 200, 20),
|
||
Mass = 50,
|
||
Type = MissileType.LaserSemiActiveGuidance
|
||
}
|
||
],
|
||
LaserDesignatorConfigs =
|
||
[
|
||
new LaserDesignatorConfig
|
||
{
|
||
InitialPosition = new Vector3D(500, 150, 100),
|
||
MaxIlluminationRange = 1000
|
||
}
|
||
],
|
||
SimulationTimeStep = 0.25
|
||
};
|
||
|
||
// 创建仿真管理器
|
||
var simulationManager = new SimulationManager(config);
|
||
|
||
// 运行仿真
|
||
int maxIterations = 1000;
|
||
int iteration = 0;
|
||
while (!simulationManager.IsSimulationEnded && iteration < maxIterations)
|
||
{
|
||
simulationManager.Update();
|
||
simulationManager.PrintStatus();
|
||
Thread.Sleep(100); // 暂停100毫秒,使输出更易读
|
||
iteration++;
|
||
}
|
||
|
||
Console.WriteLine("仿真结束");
|
||
}
|
||
}
|
||
} |