Ref T275, utility functions in simulated aircraft, sim object ..

This commit is contained in:
Klaus Basan
2018-06-28 01:26:08 +02:00
parent 6bcded9264
commit c168262159
8 changed files with 44 additions and 3 deletions

View File

@@ -94,6 +94,12 @@ namespace BlackMisc
//! Constructor, value as CAltitude::MeanSeaLevel
CAltitude(double value, const PhysicalQuantities::CLengthUnit &unit) : CLength(value, unit), m_datum(MeanSeaLevel) {}
//! Constructor, value as CAltitude::MeanSeaLevel
CAltitude(double value, const PhysicalQuantities::CLengthUnit &unit, const PhysicalQuantities::CLengthUnit &switchUnit) : CLength(value, unit), m_datum(MeanSeaLevel)
{
this->switchUnit(switchUnit);
}
//! Altitude as string
CAltitude(const QString &altitudeAsString, PhysicalQuantities::CPqString::SeparatorMode mode = PhysicalQuantities::CPqString::SeparatorsLocale);

View File

@@ -56,6 +56,12 @@ namespace BlackMisc
Q_ASSERT_X(!std::isnan(altitudeMSLft), Q_FUNC_INFO, "elv.nan");
}
CElevationPlane::CElevationPlane(const CLatitude &lat, const CLongitude &lng, const CAltitude &altitude, const CLength &radius) :
CCoordinateGeodetic(lat, lng, altitude), m_radius(radius)
{
Q_ASSERT_X(altitude.isMeanSeaLevel(), Q_FUNC_INFO, "Need MSL");
}
void CElevationPlane::setRadiusOrMinimum(const CLength &radius)
{
m_radius = ((radius.isNull() || radius < CElevationPlane::singlePointRadius())) ? CElevationPlane::singlePointRadius() : radius;

View File

@@ -48,6 +48,9 @@ namespace BlackMisc
//! Plane at given coordinates with radius and altitude
CElevationPlane(double latDeg, double lngDeg, double altitudeMSLft, const PhysicalQuantities::CLength &radius);
//! Plane at given coordinates with radius and altitude
CElevationPlane(const CLatitude &lat, const CLongitude &lng, const Aviation::CAltitude &altitude, const PhysicalQuantities::CLength &radius);
//! Constructors from CCoordinateGeodetic
using CCoordinateGeodetic::CCoordinateGeodetic;

View File

@@ -29,6 +29,12 @@ namespace BlackMisc
//! Init by double value
CLength(double value, const CLengthUnit &unit) : CPhysicalQuantity(value, unit) {}
//! Init by double value and switch unit
CLength(double value, const CLengthUnit &unit, const CLengthUnit &switchUnit) : CPhysicalQuantity(value, unit)
{
this->switchUnit(switchUnit);
}
//! \copydoc CPhysicalQuantity(const QString &unitString)
CLength(const QString &unitString) : CPhysicalQuantity(unitString) {}
};

View File

@@ -479,9 +479,11 @@ namespace BlackMisc
m_models[NetworkModel] = model;
}
void CSimulatedAircraft::setCG(const CLength &cg)
bool CSimulatedAircraft::setCG(const CLength &cg)
{
m_models.setCG(cg);
if (cg.isNull()) { return false; }
const int c = m_models.setCG(cg);
return c > 0;
}
void CSimulatedAircraft::setModelString(const QString &modelString)

View File

@@ -388,7 +388,7 @@ namespace BlackMisc
void setNetworkModel(const CAircraftModel &model);
//! Set the center of gravity
void setCG(const PhysicalQuantities::CLength &cg);
bool setCG(const PhysicalQuantities::CLength &cg);
//! Set callsign
void setCallsign(const Aviation::CCallsign &callsign);