9 const double G_ACCELERATION = 9.80665;
10 const double SECONDS_IN_HOUR = 3600;
12 Calculate::Calculate() {
18 Calculate::~Calculate() {
21 void Calculate::reset() {
33 /* Getters and setters
36 double Calculate::AverageSpeed()
40 void Calculate::AverageSpeed(double value)
44 double Calculate::CurrentSpeed()
48 void Calculate::CurrentSpeed(double value)
52 double Calculate::DistanceTraveled()
54 return distanceTraveled;
56 void Calculate::DistanceTraveled(double value)
58 distanceTraveled = value;
60 double Calculate::LastAcceleration()
62 return lastAcceleration;
64 void Calculate::LastAcceleration(double value)
66 lastAcceleration = value;
68 double Calculate::LastDistance()
72 void Calculate::LastDistance(double value)
76 double Calculate::LastSpeed()
80 void Calculate::LastSpeed(double value)
84 long Calculate::NumOfIterations()
86 return numOfIterations;
88 void Calculate::NumOfIterations(long value)
90 numOfIterations = value;
92 double Calculate::TotalTime()
96 void Calculate::TotalTime(double value)
102 This is a main function for calculating various parameters. Accelerometer
103 provides currentAcceleration and calling function measures time (seconds).
104 This function should be called 20-30 times/second to minimize
107 To be added: params like horsepower.
109 void Calculate::CalculateParameters(double currentAcceleration, double seconds)
112 totalTime = (totalTime + seconds);
115 // v(n) = v(n-1)+(a(n) + a(n-1))*(seconds)/2
117 /* First integration of acceleration provides speed
119 currentSpeed = (lastSpeed + (((currentAcceleration + lastAcceleration) * seconds) / 2));
121 /* Second integration: distance.
123 distanceTraveled = (lastDistance + (((currentSpeed + lastSpeed) * seconds) / 2));
127 averageSpeed = (distanceTraveled / totalTime);
129 lastSpeed = currentSpeed;
130 lastAcceleration = currentAcceleration;
131 lastDistance = distanceTraveled;