public ConstantVelocity2DModel GetNoisyState(double accelerationNoise) { var processNoiseMat = ConstantVelocity2DModel.GetProcessNoise(accelerationNoise); var noise = normalDistribution.Generate(ConstantVelocity2DModel.Dimension).Multiply(processNoiseMat); return(new ConstantVelocity2DModel { Position = new PointF { X = currentState.Position.X + (float)noise[0], Y = currentState.Position.Y + (float)noise[2] }, Velocity = new PointF { X = currentState.Velocity.X + (float)noise[1], Y = currentState.Velocity.Y + (float)noise[3] } }); }