ActiveProtect/Program.cs

139 lines
5.0 KiB
C#
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.

using System;
using System.Threading;
using ActiveProtect.SimulationEnvironment;
using ActiveProtect.Models;
using Model;
using System.Security.Cryptography.X509Certificates;
using System.Collections.Generic;
namespace ActiveProtect
{
class Program
{
static void Main(string[] args)
{
TankInfo tankinfo = new()
{
xp = 100,
yp = 0,
zp = 100
};
MIniInfo mIniInfo = new()
{
xm = 1500,
ym = 200,
zm = 100,
psi_m = Math.PI,
theta_m = -0.1,
vm = 0
};
// 创建仿真配置
var config = new SimulationConfig
{
// 配置坦克
TankConfigs = new List<TankConfig>
{
new TankConfig(tankinfo)
{
InitialOrientation = new Orientation(Math.PI/4, 0, 0),
InitialSpeed = 15,
MaxSpeed = 20,
MaxArmor = 100,
HasLaserWarner = false,
HasLaserJammer = true
}
},
// 配置激光指示器
LaserDesignatorConfig = new LaserDesignatorConfig
{
InitialPosition = new Vector3D(2000, 150, 100),
LaserPower = 1e6,
LaserDivergenceAngle = 0.01
},
// 配置激光告警器
LaserWarnerConfig = new LaserWarnerConfig
{
AlarmDuration = 5.0
},
// 配置激光干扰器
LaserJammerConfig = new LaserJammerConfig
{
MaxJammingCooldown = 5.0,
MaxJammingPower = 10000.0,
InitialJammingPower = 4000.0,
PowerIncreaseRate = 2000.0
},
// 配置激光驾束仪
LaserBeamRiderConfig = new LaserBeamRiderConfig
{
InitialPosition = new Vector3D(2000, 10, 100),
LaserPower = 1000,
ControlFieldDiameter = 6
},
// 配置导弹
MissileConfigs = new List<MissileConfig>
{
// 激光半主动制导导弹配置
new MissileConfig
{
InitialPosition = new Vector3D(2000, 100, 100),
InitialOrientation = new Orientation(Math.PI, -0.1, 0),
InitialSpeed = 700,
MaxSpeed = 800,
TargetIndex = 0,
MaxFlightTime = 0.05,
MaxFlightDistance = 5000,
ThrustAcceleration = 50,
MaxEngineBurnTime = 10,
MaxAcceleration = 400,
ProportionalNavigationCoefficient = 3,
StageConfig = FlightStageConfig.LaserSemiActiveGuidedMissile,
DistanceParams = new MissileDistanceParams(500, 200, 20),
Mass = 50,
Type = MissileType.LaserSemiActiveGuidance
},
// 激光驾束制导导弹配置
new MissileConfig
{
InitialPosition = new Vector3D(2000, 10, 100),
InitialOrientation = new Orientation(Math.PI, 0.1, 0.0),
InitialSpeed = 300,
MaxSpeed = 400,
TargetIndex = 0,
MaxFlightTime = 0.05,
MaxFlightDistance = 3000,
ThrustAcceleration = 50,
MaxEngineBurnTime = 10,
MaxAcceleration = 400,
ProportionalNavigationCoefficient = 3,
StageConfig = FlightStageConfig.LaserBeamRiderGuidance,
DistanceParams = new MissileDistanceParams(500, 200, 10),
Mass = 50,
Type = MissileType.LaserBeamRiderGuidance
}
},
SimulationTimeStep = 0.025
};
// 创建仿真管理器
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("仿真结束");
}
}
}