22 lines
632 B
C++
22 lines
632 B
C++
#include "vehicle.h"
|
|
|
|
void Vehicle::step(double dt, double wheel_torque_nm) {
|
|
double drive_force_n = wheel_torque_nm / kWheelRadiusM;
|
|
double drag_force_n = kDragCoeff * m_speed_mps * m_speed_mps;
|
|
|
|
double net_force_n = drive_force_n - drag_force_n;
|
|
double accel_mps2 = net_force_n / kMassKg;
|
|
|
|
m_speed_mps += accel_mps2 * dt;
|
|
if (m_speed_mps < 0.0) m_speed_mps = 0.0; // no reverse yet
|
|
}
|
|
|
|
double Vehicle::speed_mps() const {
|
|
return m_speed_mps;
|
|
}
|
|
|
|
double Vehicle::wheel_rpm() const {
|
|
double wheel_rad_per_s = m_speed_mps / kWheelRadiusM;
|
|
return wheel_rad_per_s * 60.0 / (2.0 * 3.14159265358979);
|
|
}
|