[Velocity] Add length unit and rename time unit

This commit is contained in:
Mat Sutcliffe
2022-02-19 19:35:17 +00:00
parent 66c97cfe2e
commit 117f01902a
2 changed files with 19 additions and 14 deletions

View File

@@ -17,8 +17,9 @@ BLACK_DEFINE_VALUEOBJECT_MIXINS(BlackMisc::Aviation, CAircraftVelocity)
namespace BlackMisc::Aviation
{
const CSpeedUnit CAircraftVelocity::c_xyzSpeedUnit = CSpeedUnit::m_s();
const CLengthUnit CAircraftVelocity::c_xyzLengthUnit = CLengthUnit::m();
const CAngleUnit CAircraftVelocity::c_pbhAngleUnit = CAngleUnit::rad();
const CTimeUnit CAircraftVelocity::c_pbhTimeUnit = CTimeUnit::s();
const CTimeUnit CAircraftVelocity::c_timeUnit = CTimeUnit::s();
CAircraftVelocity::CAircraftVelocity() = default;
@@ -37,9 +38,9 @@ namespace BlackMisc::Aviation
void CAircraftVelocity::setAngularVelocity(double pitch, double roll, double heading, CAngleUnit pbhAngleUnit, CTimeUnit pbhTimeUnit)
{
m_pitch = pbhTimeUnit.convertFrom(c_pbhAngleUnit.convertFrom(pitch, pbhAngleUnit), c_pbhTimeUnit);
m_roll = pbhTimeUnit.convertFrom(c_pbhAngleUnit.convertFrom(roll, pbhAngleUnit), c_pbhTimeUnit);
m_heading = pbhTimeUnit.convertFrom(c_pbhAngleUnit.convertFrom(heading, pbhAngleUnit), c_pbhTimeUnit);
m_pitch = pbhTimeUnit.convertFrom(c_pbhAngleUnit.convertFrom(pitch, pbhAngleUnit), c_timeUnit);
m_roll = pbhTimeUnit.convertFrom(c_pbhAngleUnit.convertFrom(roll, pbhAngleUnit), c_timeUnit);
m_heading = pbhTimeUnit.convertFrom(c_pbhAngleUnit.convertFrom(heading, pbhAngleUnit), c_timeUnit);
}
double CAircraftVelocity::getVelocityX(CSpeedUnit unit) const
@@ -59,24 +60,24 @@ namespace BlackMisc::Aviation
double CAircraftVelocity::getPitchVelocity(CAngleUnit angleUnit, CTimeUnit timeUnit) const
{
return c_pbhTimeUnit.convertFrom(angleUnit.convertFrom(m_pitch, c_pbhAngleUnit), timeUnit);
return c_timeUnit.convertFrom(angleUnit.convertFrom(m_pitch, c_pbhAngleUnit), timeUnit);
}
double CAircraftVelocity::getRollVelocity(CAngleUnit angleUnit, CTimeUnit timeUnit) const
{
return c_pbhTimeUnit.convertFrom(angleUnit.convertFrom(m_roll, c_pbhAngleUnit), timeUnit);
return c_timeUnit.convertFrom(angleUnit.convertFrom(m_roll, c_pbhAngleUnit), timeUnit);
}
double CAircraftVelocity::getHeadingVelocity(CAngleUnit angleUnit, CTimeUnit timeUnit) const
{
return c_pbhTimeUnit.convertFrom(angleUnit.convertFrom(m_heading, c_pbhAngleUnit), timeUnit);
return c_timeUnit.convertFrom(angleUnit.convertFrom(m_heading, c_pbhAngleUnit), timeUnit);
}
QString CAircraftVelocity::convertToQString(bool i18n) const
{
return u"Velocity: " % QStringLiteral("%1 %2 %3 ").arg(m_x).arg(m_y).arg(m_z) % c_xyzSpeedUnit.convertToQString(i18n) %
u" | Rotation: " % QStringLiteral("%1 %2 %3 ").arg(m_pitch).arg(m_roll).arg(m_heading) %
c_pbhAngleUnit.convertToQString(i18n) % u"/" % c_pbhTimeUnit.convertToQString(i18n);
c_pbhAngleUnit.convertToQString(i18n) % u"/" % c_timeUnit.convertToQString(i18n);
}
QVariant CAircraftVelocity::propertyByIndex(CPropertyIndexRef index) const

View File

@@ -73,14 +73,18 @@ namespace BlackMisc::Aviation
//! \copydoc Mixin::Index::comparePropertyByIndex
int comparePropertyByIndex(CPropertyIndexRef index, const CAircraftVelocity &compareValue) const;
private:
static const PhysicalQuantities::CAngleUnit c_pbhAngleUnit; //!< \todo Create a dedicated PQ class for angular velocity
//! Unit constants
//! @{
static const PhysicalQuantities::CSpeedUnit c_xyzSpeedUnit;
static const PhysicalQuantities::CTimeUnit c_pbhTimeUnit;
static const PhysicalQuantities::CLengthUnit c_xyzLengthUnit;
static const PhysicalQuantities::CAngleUnit c_pbhAngleUnit; // TODO Create a dedicated PQ class for angular velocity
static const PhysicalQuantities::CTimeUnit c_timeUnit;
//! @}
double m_x = 0;
double m_y = 0;
double m_z = 0;
private:
double m_x = 0; //!< Positive moves east
double m_y = 0; //!< Positive moves up
double m_z = 0; //!< Positive moves north
double m_pitch = 0;
double m_roll = 0;
double m_heading = 0;