• Home
  • Features
  • Pricing
  • Docs
  • Announcements
  • Sign In

MissionEngineeringLtd / MissionEngineeringToolbox / 23873601663

01 Apr 2026 10:18PM UTC coverage: 69.736% (-0.5%) from 70.201%
23873601663

push

github

MissionEngineeringLtd
#9: Added Sensor project.

100 of 164 branches covered (60.98%)

Branch coverage included in aggregate %.

5 of 20 new or added lines in 2 files covered. (25.0%)

1301 of 1845 relevant lines covered (70.51%)

1692.13 hits per line

Source File
Press 'n' to go to next uncovered line, 'b' for previous

75.95
/MissionEngineering.Platform/Source/PlatformModel.cs
1
using MissionEngineering.Math;
2

3
namespace MissionEngineering.Platform;
4

5
public class PlatformModel
6
{
7
    public ILLAOrigin LLAOrigin { get; set; }
3,804✔
8

9
    public PlatformModel(ILLAOrigin llaOrigin)
2✔
10
    {
2✔
11
        LLAOrigin = llaOrigin;
2✔
12
    }
2✔
13

14
    public PlatformState Update(DateTime dateTime, double time_s, PlatformState platformState)
15
    {
3,802✔
16
        // For update, we  use the actual acceleration in the TBA frame.
17
        var accelerationTBA = GetAccelerationTBA();
3,802✔
18

19
        var ps = GeneratePlatformState(dateTime, time_s, platformState, accelerationTBA);
3,802✔
20

21
        return ps;
3,802✔
22
    }
3,802✔
23

24
    public PlatformState Predict(DateTime dateTime, double time_s, PlatformState platformState)
NEW
25
    {
×
26
        // For prediction, we assume zero acceleration in the TBA frame for simplicity.
NEW
27
        var accelerationTBA = new AccelerationTBA
×
NEW
28
        {
×
NEW
29
            AccelerationAxial_ms2 = 0.0,
×
NEW
30
            AccelerationLateral_ms2 = 0.0,
×
NEW
31
            AccelerationVertical_ms2 = 0.0
×
NEW
32
        }; 
×
33

NEW
34
        var ps = GeneratePlatformState(dateTime, time_s, platformState, accelerationTBA);
×
35

NEW
36
        return ps;
×
NEW
37
    }
×
38

39
    public PlatformState GeneratePlatformState(DateTime dateTime, double time_s, PlatformState platformState, AccelerationTBA accelerationTBA)
40
    {
3,802✔
41
        var deltaTime = time_s - platformState.Time_s;
3,802✔
42

43
        var dt = new DeltaTime(deltaTime);
3,802✔
44

45
        var accelerationNED = GetAccelerationNED(accelerationTBA, platformState.Attitude);
3,802✔
46

47
        var velocityNED = platformState.VelocityNED + accelerationNED * dt;
3,802✔
48
        var positionNED = platformState.PositionNED + velocityNED * dt;
3,802✔
49

50
        var positionLLA = MappingConversions.ConvertPositionNEDToPositionLLA(positionNED, LLAOrigin.PositionLLA);
3,802✔
51

52
        var attitude = FrameConversions.GetAttitudeFromVelocityVector(platformState.VelocityNED);
3,802✔
53
        var attitudeRate = GetAttitudeRate(platformState.Attitude, attitude, dt);
3,802✔
54

55
        var ps = platformState with
3,802✔
56
        {
3,802✔
57
            DateTime = dateTime,
3,802✔
58
            Time_s = time_s,
3,802✔
59
            PositionLLA = positionLLA,
3,802✔
60
            PositionNED = positionNED,
3,802✔
61
            VelocityNED = velocityNED,
3,802✔
62
            AccelerationNED = accelerationNED,
3,802✔
63
            AccelerationTBA = accelerationTBA,
3,802✔
64
            Attitude = attitude,
3,802✔
65
            AttitudeRate = attitudeRate
3,802✔
66
        };
3,802✔
67

68
        return ps;
3,802✔
69
    }
3,802✔
70

71
    public AccelerationTBA GetAccelerationTBA()
72
    {
3,802✔
73
        var accelerationTBA = new AccelerationTBA
3,802✔
74
        {
3,802✔
75
            AccelerationAxial_ms2 = 0.0,
3,802✔
76
            AccelerationLateral_ms2 = 0.0,
3,802✔
77
            AccelerationVertical_ms2 = 0.0
3,802✔
78
        };
3,802✔
79

80
        return accelerationTBA;
3,802✔
81
    }
3,802✔
82

83
    public AccelerationNED GetAccelerationNED(AccelerationTBA accelerationTBA, Attitude attitude)
84
    {
3,802✔
85
        var accelerationNED = FrameConversions.GetAccelerationNED(accelerationTBA, attitude);
3,802✔
86

87
        return accelerationNED;
3,802✔
88
    }
3,802✔
89

90
    public Attitude GetAttitude()
91
    {
×
92
        var attitude = new Attitude
×
93
        {
×
94
            HeadingAngle_deg = 0.0,
×
95
            BankAngle_deg = 0.0,
×
96
            PitchAngle_deg = 0.0,
×
97
        };
×
98

99
        return attitude;
×
100
    }
×
101

102
    public AttitudeRate GetAttitudeRate(Attitude attitudePrevious, Attitude attitudeCurrent, DeltaTime deltaTime_s)
103
    {
3,802✔
104
        if (deltaTime_s.DeltaTime_s == 0.0)
3,802✔
105
        {
2✔
106
            return new AttitudeRate
2✔
107
            {
2✔
108
                HeadingAngleRate_degs = 0.0,
2✔
109
                PitchAngleRate_degs = 0.0,
2✔
110
                BankAngleRate_degs = 0.0
2✔
111
            };
2✔
112
        }
113

114
        var attitudeRate = (attitudeCurrent - attitudePrevious) / deltaTime_s;
3,800✔
115

116
        return attitudeRate;
3,800✔
117
    }
3,802✔
118
}
STATUS · Troubleshooting · Open an Issue · Sales · Support · CAREERS · ENTERPRISE · START FREE · SCHEDULE DEMO
ANNOUNCEMENTS · TWITTER · TOS & SLA · Supported CI Services · What's a CI service? · Automated Testing

© 2026 Coveralls, Inc