Skip to content

Commit a2845f8

Browse files
committed
Correct NaN issue
1 parent 69a70cb commit a2845f8

File tree

1 file changed

+44
-4
lines changed
  • Source/Orts.Simulation/Simulation/RollingStocks

1 file changed

+44
-4
lines changed

Source/Orts.Simulation/Simulation/RollingStocks/TrainCar.cs

Lines changed: 44 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -1429,8 +1429,28 @@ public void UpdateTrainDerailmentRisk(float elapsedClockSeconds)
14291429

14301430
if (CurrentCurveRadius != 0)
14311431
{
1432-
var A = MassKG * GravitationalAccelerationMpS2 / numWheels;
1433-
var B1 = (MassKG / numAxles) * (float)Math.Pow(Math.Abs(SpeedMpS), 2) / CurrentCurveRadius;
1432+
float A = 0;
1433+
float B1 = 0;
1434+
1435+
// Prevent NaN if numWheels = 0
1436+
if (numWheels != 0)
1437+
{
1438+
A = MassKG * GravitationalAccelerationMpS2 / numWheels;
1439+
}
1440+
else
1441+
{
1442+
A = MassKG * GravitationalAccelerationMpS2;
1443+
}
1444+
1445+
// Prevent NaN if numAxles = 0
1446+
if (numAxles != 0)
1447+
{
1448+
B1 = (MassKG / numAxles) * (float)Math.Pow(Math.Abs(SpeedMpS), 2) / CurrentCurveRadius;
1449+
}
1450+
else
1451+
{
1452+
B1 = MassKG * (float)Math.Pow(Math.Abs(SpeedMpS), 2) / CurrentCurveRadius;
1453+
}
14341454
var B2 = GravitationalAccelerationMpS2 * (float)Math.Cos(SuperElevationAngleRad);
14351455
var B3 = CentreOfGravityM.Y / TrackGaugeM;
14361456

@@ -1441,8 +1461,28 @@ public void UpdateTrainDerailmentRisk(float elapsedClockSeconds)
14411461

14421462
if (CarAhead != null)
14431463
{
1444-
var AA1 = CarAhead.CouplerForceU * (float)Math.Sin(WagonCouplerAngleDerailRad) / WagonNumBogies;
1445-
var BB1 = MassKG / numAxles;
1464+
float AA1 = 0;
1465+
float BB1 = 0;
1466+
1467+
// Prevent NaN if WagonNumBogies = 0
1468+
if ( WagonNumBogies != 0)
1469+
{
1470+
AA1 = CarAhead.CouplerForceU * (float)Math.Sin(WagonCouplerAngleDerailRad) / WagonNumBogies;
1471+
}
1472+
else
1473+
{
1474+
AA1 = CarAhead.CouplerForceU * (float)Math.Sin(WagonCouplerAngleDerailRad);
1475+
}
1476+
1477+
// Prevent NaN if numAxles = 0
1478+
if (numAxles != 0)
1479+
{
1480+
BB1 = MassKG / numAxles;
1481+
}
1482+
else
1483+
{
1484+
BB1 = MassKG;
1485+
}
14461486
var BB2 = (float)Math.Pow(Math.Abs(SpeedMpS), 2) / CurrentCurveRadius;
14471487
var BB3 = GravitationalAccelerationMpS2 * (float)Math.Sin(SuperElevationAngleRad);
14481488

0 commit comments

Comments
 (0)