feat(gamecli): implement Observation.Build with unit tests
This commit is contained in:
25
GameCli/Observation.cs
Normal file
25
GameCli/Observation.cs
Normal file
@@ -0,0 +1,25 @@
|
||||
namespace GameCli;
|
||||
|
||||
/// <summary>
|
||||
/// Builds the 7-dim observation vector fed to PPO:
|
||||
/// [dx, dy, vx, vy, sin(angle), cos(angle), angular_velocity]
|
||||
/// Angle is encoded as sin/cos to avoid the discontinuity at ±π.
|
||||
/// </summary>
|
||||
public static class Observation
|
||||
{
|
||||
public const int Dim = 7;
|
||||
|
||||
public static float[] Build(ShipState s, (float X, float Y) target)
|
||||
{
|
||||
return new float[Dim]
|
||||
{
|
||||
target.X - s.X,
|
||||
target.Y - s.Y,
|
||||
s.VX,
|
||||
s.VY,
|
||||
MathF.Sin(s.Angle),
|
||||
MathF.Cos(s.Angle),
|
||||
s.AngularVelocity,
|
||||
};
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user