26 lines
626 B
C++
26 lines
626 B
C++
#include "transmission.h"
|
|
|
|
void Transmission::set_gear(int gear) {
|
|
if (gear >= 0 && gear <= kNumGears) {
|
|
m_gear = gear;
|
|
}
|
|
}
|
|
|
|
int Transmission::gear() const {
|
|
return m_gear;
|
|
}
|
|
|
|
double Transmission::ratio() const {
|
|
return kGearRatios[m_gear] * kFinalDrive;
|
|
}
|
|
|
|
double Transmission::output_torque_nm(double engine_torque_nm) const {
|
|
if (m_gear == 0) return 0.0; // neutral: nothing reaches the wheels
|
|
return engine_torque_nm * ratio();
|
|
}
|
|
|
|
double Transmission::reflected_engine_rpm(double wheel_rpm) const {
|
|
if (m_gear == 0) return 0.0; // decoupled in neutral
|
|
return wheel_rpm * ratio();
|
|
}
|