@@ -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