Skip to content

Commit abd8ccf

Browse files
CsantucciChris Jakeman
authored andcommitted
Removed train shaking problem when running true 64 bit
1 parent 3a7bece commit abd8ccf

File tree

1 file changed

+10
-10
lines changed
  • Source/Orts.Simulation/Simulation/RollingStocks

1 file changed

+10
-10
lines changed

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

Lines changed: 10 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -2865,7 +2865,7 @@ public void ComputePosition(Traveller traveler, bool backToFront, float elapsedT
28652865
continue;
28662866
if (p.SumWgt < 1.5)
28672867
{ // single axle pony trunk
2868-
float d = p.OffsetM - p.SumOffset / p.SumWgt;
2868+
double d = p.OffsetM - p.SumOffset / p.SumWgt;
28692869
if (-.2 < d && d < .2)
28702870
continue;
28712871
p.AddWheelSetLocation(1, p.OffsetM, p0.A[0] + p.OffsetM * p0.B[0], p0.A[1] + p.OffsetM * p0.B[1], p0.A[2] + p.OffsetM * p0.B[2], 0, null);
@@ -3382,11 +3382,11 @@ public class TrainCarPart
33823382
public float Cos = 1; // truck angle cosine
33833383
public float Sin = 0; // truck angle sin
33843384
// line fitting variables
3385-
public float SumWgt;
3386-
public float SumOffset;
3387-
public float SumOffsetSq;
3388-
public float[] SumX = new float[4];
3389-
public float[] SumXOffset = new float[4];
3385+
public double SumWgt;
3386+
public double SumOffset;
3387+
public double SumOffsetSq;
3388+
public double[] SumX = new double[4];
3389+
public double[] SumXOffset = new double[4];
33903390
public float[] A = new float[4];
33913391
public float[] B = new float[4];
33923392
public bool bogie;
@@ -3429,20 +3429,20 @@ public void AddPartLocation(float w, TrainCarPart part)
34293429
}
34303430
public void FindCenterLine()
34313431
{
3432-
float d = SumWgt * SumOffsetSq - SumOffset * SumOffset;
3432+
double d = SumWgt * SumOffsetSq - SumOffset * SumOffset;
34333433
if (d > 1e-20)
34343434
{
34353435
for (int i = 0; i < 4; i++)
34363436
{
3437-
A[i] = (SumOffsetSq * SumX[i] - SumOffset * SumXOffset[i]) / d;
3438-
B[i] = (SumWgt * SumXOffset[i] - SumOffset * SumX[i]) / d;
3437+
A[i] = (float)((SumOffsetSq * SumX[i] - SumOffset * SumXOffset[i]) / d);
3438+
B[i] = (float)((SumWgt * SumXOffset[i] - SumOffset * SumX[i]) / d);
34393439
}
34403440
}
34413441
else
34423442
{
34433443
for (int i = 0; i < 4; i++)
34443444
{
3445-
A[i] = SumX[i] / SumWgt;
3445+
A[i] = (float)(SumX[i] / SumWgt);
34463446
B[i] = 0;
34473447
}
34483448
}

0 commit comments

Comments
 (0)