mirror of
https://github.com/swift-project/pilotclient.git
synced 2026-03-31 04:25:35 +08:00
Ref T268, elevation plane improvements
This commit is contained in:
@@ -21,17 +21,21 @@ namespace BlackMisc
|
||||
{
|
||||
QString CElevationPlane::convertToQString(bool i18n) const
|
||||
{
|
||||
static const QString s = "Geodetic: {%1, %2, %3} radius: %4";
|
||||
return s.arg(this->latitude().valueRoundedWithUnit(6, i18n),
|
||||
this->longitude().valueRoundedWithUnit(6, i18n),
|
||||
this->geodeticHeight().valueRoundedWithUnit(6, i18n),
|
||||
static const QString s = "Geodetic: {%1/%2, %3/%4, %5} radius: %6";
|
||||
const CLatitude lat = this->latitude();
|
||||
const CLongitude lng = this->longitude();
|
||||
return s.arg(lat.valueRoundedWithUnit(CAngleUnit::deg(), 6, i18n),
|
||||
lat.valueRoundedWithUnit(CAngleUnit::rad(), 6, i18n),
|
||||
lng.valueRoundedWithUnit(CAngleUnit::deg(), 6, i18n),
|
||||
lng.valueRoundedWithUnit(CAngleUnit::rad(), 6, i18n),
|
||||
this->geodeticHeight().valueRoundedWithUnit(CLengthUnit::ft(), 6, i18n),
|
||||
m_radius.valueRoundedWithUnit(2, i18n));
|
||||
}
|
||||
|
||||
CElevationPlane::CElevationPlane(const ICoordinateGeodetic &coordinate, const ICoordinateGeodetic &rangeCoordinate) :
|
||||
CCoordinateGeodetic(coordinate)
|
||||
{
|
||||
this->setRadiusOrMinimum(this->calculateGreatCircleDistance(rangeCoordinate));
|
||||
this->setRadiusOrMinimumRadius(this->calculateGreatCircleDistance(rangeCoordinate));
|
||||
}
|
||||
|
||||
CElevationPlane::CElevationPlane(const ICoordinateGeodetic &coordinate, const CLength &radius) :
|
||||
@@ -62,11 +66,25 @@ namespace BlackMisc
|
||||
Q_ASSERT_X(altitude.isMeanSeaLevel(), Q_FUNC_INFO, "Need MSL");
|
||||
}
|
||||
|
||||
void CElevationPlane::setRadiusOrMinimum(const CLength &radius)
|
||||
const CLength &CElevationPlane::getRadiusOrMinimumRadius() const
|
||||
{
|
||||
if (m_radius.isNull() || m_radius < CElevationPlane::singlePointRadius()) { return CElevationPlane::singlePointRadius(); }
|
||||
return m_radius;
|
||||
}
|
||||
|
||||
void CElevationPlane::setRadiusOrMinimumRadius(const CLength &radius)
|
||||
{
|
||||
m_radius = ((radius.isNull() || radius < CElevationPlane::singlePointRadius())) ? CElevationPlane::singlePointRadius() : radius;
|
||||
}
|
||||
|
||||
void CElevationPlane::fixRadius()
|
||||
{
|
||||
if (m_radius.isNull() || m_radius < CElevationPlane::singlePointRadius())
|
||||
{
|
||||
m_radius = CElevationPlane::singlePointRadius();
|
||||
}
|
||||
}
|
||||
|
||||
void CElevationPlane::addAltitudeOffset(const CLength &offset)
|
||||
{
|
||||
if (offset.isNull() || offset.isZeroEpsilonConsidered()) { return; }
|
||||
@@ -157,7 +175,8 @@ namespace BlackMisc
|
||||
|
||||
int CElevationPlane::comparePropertyByIndex(const CPropertyIndex &index, const CElevationPlane &elevationPlane) const
|
||||
{
|
||||
return this->getAltitude().comparePropertyByIndex(index, elevationPlane.getAltitude());
|
||||
Q_UNUSED(index);
|
||||
return this->getAltitude().compare(elevationPlane.getAltitude());
|
||||
}
|
||||
|
||||
// 100km/h 27,8m/s
|
||||
|
||||
@@ -57,11 +57,17 @@ namespace BlackMisc
|
||||
//! Radius
|
||||
const PhysicalQuantities::CLength &getRadius() const { return m_radius; }
|
||||
|
||||
//! Radius or minimum radius
|
||||
const PhysicalQuantities::CLength &getRadiusOrMinimumRadius() const;
|
||||
|
||||
//! Radius
|
||||
void setRadius(const PhysicalQuantities::CLength &radius) { m_radius = radius; }
|
||||
|
||||
//! Radius or minimum CElevationPlane::singlePointRadius
|
||||
void setRadiusOrMinimum(const PhysicalQuantities::CLength &radius);
|
||||
void setRadiusOrMinimumRadius(const PhysicalQuantities::CLength &radius);
|
||||
|
||||
//! Set minimum radius if not having radius
|
||||
void fixRadius();
|
||||
|
||||
//! Add offset to altitude
|
||||
void addAltitudeOffset(const PhysicalQuantities::CLength &offset);
|
||||
@@ -106,7 +112,7 @@ namespace BlackMisc
|
||||
//! \copydoc BlackMisc::Mixin::Index::setPropertyByIndex
|
||||
void setPropertyByIndex(const CPropertyIndex &index, const CVariant &variant);
|
||||
|
||||
//! Compare by index
|
||||
//! \copydoc BlackMisc::Mixin::Index::comparePropertyByIndex
|
||||
int comparePropertyByIndex(const CPropertyIndex &index, const CElevationPlane &elevationPlane) const;
|
||||
|
||||
//! \copydoc BlackMisc::Mixin::String::toQString
|
||||
|
||||
Reference in New Issue
Block a user