refs #837 CAircraftSituation altitude is part of its position.

This commit is contained in:
Mathew Sutcliffe
2016-12-15 02:32:10 +00:00
parent 7e1ed21662
commit 7e85422da7
11 changed files with 29 additions and 47 deletions

View File

@@ -77,8 +77,7 @@ namespace BlackSample
qDebug() << "------- Enter -----"; qDebug() << "------- Enter -----";
cin.readLine(); cin.readLine();
CAircraftSituation situation(geoPos, CAltitude(1000, CAltitude::AboveGround, CLengthUnit::ft()), CAircraftSituation situation(geoPos, CHeading(10, CHeading::True, CAngleUnit::deg()),
CHeading(10, CHeading::True, CAngleUnit::deg()),
CAngle(12, CAngleUnit::deg()), CAngle(5, CAngleUnit::deg()), CAngle(12, CAngleUnit::deg()), CAngle(5, CAngleUnit::deg()),
CSpeed(111, CSpeedUnit::km_h())); CSpeed(111, CSpeedUnit::km_h()));
CSimulatedAircraft aircraft(CCallsign("DAMBZ"), CUser("123456", "Joe Pilot"), situation); CSimulatedAircraft aircraft(CCallsign("DAMBZ"), CUser("123456", "Joe Pilot"), situation);

View File

@@ -490,10 +490,9 @@ namespace BlackSample
{ {
CCallsign callsign("CS" + QString::number(cs)); CCallsign callsign("CS" + QString::number(cs));
CCoordinateGeodetic coordinate(cs, cs, cs); CCoordinateGeodetic coordinate(cs, cs, cs);
CAltitude alt(cs, CAltitude::MeanSeaLevel, CLengthUnit::m());
for (int t = 0; t < numberOfTimes; t++) for (int t = 0; t < numberOfTimes; t++)
{ {
CAircraftSituation s(callsign, coordinate, alt); CAircraftSituation s(callsign, coordinate);
s.setMSecsSinceEpoch(baseTimeEpoch + DeltaTime * t); s.setMSecsSinceEpoch(baseTimeEpoch + DeltaTime * t);
situations.push_back(s); situations.push_back(s);
} }

View File

@@ -355,8 +355,7 @@ namespace BlackSample
QString xpdrMode; QString xpdrMode;
args >> lat >> lon >> alt >> hdg >> pitch >> bank >> gs >> com1 >> com2 >> xpdrCode >> xpdrMode; args >> lat >> lon >> alt >> hdg >> pitch >> bank >> gs >> com1 >> com2 >> xpdrCode >> xpdrMode;
BlackMisc::Simulation::CSimulatedAircraft aircraft("", BlackMisc::Network::CUser(), BlackMisc::Aviation::CAircraftSituation( BlackMisc::Simulation::CSimulatedAircraft aircraft("", BlackMisc::Network::CUser(), BlackMisc::Aviation::CAircraftSituation(
BlackMisc::Geo::CCoordinateGeodetic(lat, lon, 0), BlackMisc::Geo::CCoordinateGeodetic(lat, lon, alt),
BlackMisc::Aviation::CAltitude(alt, BlackMisc::Aviation::CAltitude::MeanSeaLevel, BlackMisc::PhysicalQuantities::CLengthUnit::ft()),
BlackMisc::Aviation::CHeading(hdg, BlackMisc::Aviation::CHeading::True, BlackMisc::PhysicalQuantities::CAngleUnit::deg()), BlackMisc::Aviation::CHeading(hdg, BlackMisc::Aviation::CHeading::True, BlackMisc::PhysicalQuantities::CAngleUnit::deg()),
BlackMisc::PhysicalQuantities::CAngle(pitch, BlackMisc::PhysicalQuantities::CAngleUnit::deg()), BlackMisc::PhysicalQuantities::CAngle(pitch, BlackMisc::PhysicalQuantities::CAngleUnit::deg()),
BlackMisc::PhysicalQuantities::CAngle(bank, BlackMisc::PhysicalQuantities::CAngleUnit::deg()), BlackMisc::PhysicalQuantities::CAngle(bank, BlackMisc::PhysicalQuantities::CAngleUnit::deg()),
@@ -393,8 +392,7 @@ namespace BlackSample
double gs; double gs;
args >> lat >> lon >> alt >> hdg >> pitch >> bank >> gs; args >> lat >> lon >> alt >> hdg >> pitch >> bank >> gs;
updateOwnSituation(BlackMisc::Aviation::CAircraftSituation( updateOwnSituation(BlackMisc::Aviation::CAircraftSituation(
BlackMisc::Geo::CCoordinateGeodetic(lat, lon, 0), BlackMisc::Geo::CCoordinateGeodetic(lat, lon, alt),
BlackMisc::Aviation::CAltitude(alt, BlackMisc::Aviation::CAltitude::MeanSeaLevel, BlackMisc::PhysicalQuantities::CLengthUnit::ft()),
BlackMisc::Aviation::CHeading(hdg, BlackMisc::Aviation::CHeading::True, BlackMisc::PhysicalQuantities::CAngleUnit::deg()), BlackMisc::Aviation::CHeading(hdg, BlackMisc::Aviation::CHeading::True, BlackMisc::PhysicalQuantities::CAngleUnit::deg()),
BlackMisc::PhysicalQuantities::CAngle(pitch, BlackMisc::PhysicalQuantities::CAngleUnit::deg()), BlackMisc::PhysicalQuantities::CAngle(pitch, BlackMisc::PhysicalQuantities::CAngleUnit::deg()),
BlackMisc::PhysicalQuantities::CAngle(bank, BlackMisc::PhysicalQuantities::CAngleUnit::deg()), BlackMisc::PhysicalQuantities::CAngle(bank, BlackMisc::PhysicalQuantities::CAngleUnit::deg()),

View File

@@ -46,8 +46,8 @@ namespace BlackCore
CCoordinateGeodetic( CCoordinateGeodetic(
CLatitude::fromWgs84("N 049° 18' 17"), CLatitude::fromWgs84("N 049° 18' 17"),
CLongitude::fromWgs84("E 008° 27' 05"), CLongitude::fromWgs84("E 008° 27' 05"),
CLength(0, CLengthUnit::m())),
CAltitude(312, CAltitude::MeanSeaLevel, CLengthUnit::ft()) CAltitude(312, CAltitude::MeanSeaLevel, CLengthUnit::ft())
)
); );
return situation; return situation;
} }

View File

@@ -800,8 +800,7 @@ namespace BlackCore
// if altered in underlying classes, this change needs to be reverted // if altered in underlying classes, this change needs to be reverted
CAircraftSituation situation( CAircraftSituation situation(
callsign, callsign,
CCoordinateGeodetic(position->latitude, position->longitude), CCoordinateGeodetic(position->latitude, position->longitude, position->altitudePressure),
CAltitude(position->altitudePressure, CAltitude::MeanSeaLevel, CLengthUnit::ft()),
CHeading(position->heading, CHeading::True, CAngleUnit::deg()), CHeading(position->heading, CHeading::True, CAngleUnit::deg()),
CAngle(position->pitch, CAngleUnit::deg()), CAngle(position->pitch, CAngleUnit::deg()),
CAngle(position->bank, CAngleUnit::deg()), CAngle(position->bank, CAngleUnit::deg()),
@@ -878,8 +877,7 @@ namespace BlackCore
{ {
CAircraftSituation situation( CAircraftSituation situation(
CCallsign(sender), CCallsign(sender),
CCoordinateGeodetic(position->latitude, position->longitude, 0.0), CCoordinateGeodetic(position->latitude, position->longitude, position->altitudeTrue),
CAltitude(position->altitudeTrue, CAltitude::MeanSeaLevel, CLengthUnit::ft()),
CHeading(position->heading, CHeading::True, CAngleUnit::deg()), CHeading(position->heading, CHeading::True, CAngleUnit::deg()),
CAngle(position->pitch, CAngleUnit::deg()), CAngle(position->pitch, CAngleUnit::deg()),
CAngle(position->bank, CAngleUnit::deg()), CAngle(position->bank, CAngleUnit::deg()),

View File

@@ -289,7 +289,7 @@ namespace BlackCore
const double lng = clientPartsMap["longitude"].toDouble(); const double lng = clientPartsMap["longitude"].toDouble();
const double alt = clientPartsMap["altitude"].toDouble(); const double alt = clientPartsMap["altitude"].toDouble();
const CFrequency frequency = CFrequency(clientPartsMap["frequency"].toDouble(), CFrequencyUnit::MHz()); const CFrequency frequency = CFrequency(clientPartsMap["frequency"].toDouble(), CFrequencyUnit::MHz());
CCoordinateGeodetic position(lat, lng, -1); CCoordinateGeodetic position(lat, lng, alt);
CAltitude altitude(alt, CAltitude::MeanSeaLevel, CLengthUnit::ft()); CAltitude altitude(alt, CAltitude::MeanSeaLevel, CLengthUnit::ft());
QString flightPlanRemarks = clientPartsMap["planned_remarks"]; QString flightPlanRemarks = clientPartsMap["planned_remarks"];
@@ -308,7 +308,7 @@ namespace BlackCore
{ {
// Pilot section // Pilot section
const double groundspeed = clientPartsMap["groundspeed"].toDouble(); const double groundspeed = clientPartsMap["groundspeed"].toDouble();
CAircraftSituation situation(position, altitude); CAircraftSituation situation(position);
situation.setGroundSpeed(CSpeed(groundspeed, CSpeedUnit::kts())); situation.setGroundSpeed(CSpeed(groundspeed, CSpeedUnit::kts()));
CSimulatedAircraft currentAircraft(user.getCallsign().getStringAsSet(), user, situation); CSimulatedAircraft currentAircraft(user.getCallsign().getStringAsSet(), user, situation);

View File

@@ -27,13 +27,13 @@ namespace BlackMisc
CAircraftSituation::CAircraftSituation() CAircraftSituation::CAircraftSituation()
: m_groundElevation({ 0, nullptr }, CAltitude::MeanSeaLevel) {} : m_groundElevation({ 0, nullptr }, CAltitude::MeanSeaLevel) {}
CAircraftSituation::CAircraftSituation(const CCoordinateGeodetic &position, const CAltitude &altitude, const CHeading &heading, const CAngle &pitch, const CAngle &bank, const CSpeed &gs, const CAltitude &groundElevation) CAircraftSituation::CAircraftSituation(const CCoordinateGeodetic &position, const CHeading &heading, const CAngle &pitch, const CAngle &bank, const CSpeed &gs, const CAltitude &groundElevation)
: m_position(position), m_altitude(altitude), m_heading(heading), m_pitch(pitch), : m_position(position), m_heading(heading), m_pitch(pitch),
m_bank(bank), m_groundSpeed(gs), m_groundElevation(groundElevation) {} m_bank(bank), m_groundSpeed(gs), m_groundElevation(groundElevation) {}
CAircraftSituation::CAircraftSituation(const CCallsign &correspondingCallsign, const CCoordinateGeodetic &position, const CAltitude &altitude, const CHeading &heading, const CAngle &pitch, const CAngle &bank, const CSpeed &gs, const CAltitude &groundElevation) CAircraftSituation::CAircraftSituation(const CCallsign &correspondingCallsign, const CCoordinateGeodetic &position, const CHeading &heading, const CAngle &pitch, const CAngle &bank, const CSpeed &gs, const CAltitude &groundElevation)
: m_correspondingCallsign(correspondingCallsign), : m_correspondingCallsign(correspondingCallsign),
m_position(position), m_altitude(altitude), m_heading(heading), m_pitch(pitch), m_position(position), m_heading(heading), m_pitch(pitch),
m_bank(bank), m_groundSpeed(gs), m_groundElevation(groundElevation) m_bank(bank), m_groundSpeed(gs), m_groundElevation(groundElevation)
{ {
m_correspondingCallsign.setTypeHint(CCallsign::Aircraft); m_correspondingCallsign.setTypeHint(CCallsign::Aircraft);
@@ -42,7 +42,6 @@ namespace BlackMisc
QString CAircraftSituation::convertToQString(bool i18n) const QString CAircraftSituation::convertToQString(bool i18n) const
{ {
QString s(this->m_position.toQString(i18n)); QString s(this->m_position.toQString(i18n));
s.append(" altitude: ").append(this->m_altitude.toQString(i18n));
s.append(" bank: ").append(this->m_bank.toQString(i18n)); s.append(" bank: ").append(this->m_bank.toQString(i18n));
s.append(" pitch: ").append(this->m_pitch.toQString(i18n)); s.append(" pitch: ").append(this->m_pitch.toQString(i18n));
s.append(" gs: ").append(this->m_groundSpeed.toQString(i18n)); s.append(" gs: ").append(this->m_groundSpeed.toQString(i18n));
@@ -74,7 +73,7 @@ namespace BlackMisc
case IndexLongitude: case IndexLongitude:
return this->longitude().propertyByIndex(index.copyFrontRemoved()); return this->longitude().propertyByIndex(index.copyFrontRemoved());
case IndexAltitude: case IndexAltitude:
return this->m_altitude.propertyByIndex(index.copyFrontRemoved()); return this->getAltitude().propertyByIndex(index.copyFrontRemoved());
case IndexHeading: case IndexHeading:
return this->m_heading.propertyByIndex(index.copyFrontRemoved()); return this->m_heading.propertyByIndex(index.copyFrontRemoved());
case IndexPitch: case IndexPitch:
@@ -105,9 +104,6 @@ namespace BlackMisc
case IndexPosition: case IndexPosition:
this->m_position.setPropertyByIndex(index.copyFrontRemoved(), variant); this->m_position.setPropertyByIndex(index.copyFrontRemoved(), variant);
break; break;
case IndexAltitude:
this->m_altitude.setPropertyByIndex(index.copyFrontRemoved(), variant);
break;
case IndexPitch: case IndexPitch:
this->m_pitch.setPropertyByIndex(index.copyFrontRemoved(), variant); this->m_pitch.setPropertyByIndex(index.copyFrontRemoved(), variant);
break; break;
@@ -143,7 +139,7 @@ namespace BlackMisc
return this->m_position.comparePropertyByIndex(index.copyFrontRemoved(), compareValue.getPosition()); return this->m_position.comparePropertyByIndex(index.copyFrontRemoved(), compareValue.getPosition());
break; break;
case IndexAltitude: case IndexAltitude:
return this->m_altitude.comparePropertyByIndex(index.copyFrontRemoved(), compareValue.getAltitude()); return this->getAltitude().comparePropertyByIndex(index.copyFrontRemoved(), compareValue.getAltitude());
break; break;
case IndexPitch: case IndexPitch:
return this->m_pitch.comparePropertyByIndex(index.copyFrontRemoved(), compareValue.getPitch()); return this->m_pitch.comparePropertyByIndex(index.copyFrontRemoved(), compareValue.getPitch());
@@ -185,15 +181,15 @@ namespace BlackMisc
CLength CAircraftSituation::getHeightAboveGround() const CLength CAircraftSituation::getHeightAboveGround() const
{ {
if (this->m_altitude.getReferenceDatum() == CAltitude::AboveGround) if (this->getAltitude().getReferenceDatum() == CAltitude::AboveGround)
{ {
// we have a sure value // we have a sure value
return this->getAltitude(); return this->getAltitude();
} }
const CLength gh(getGroundElevation()); const CLength gh(getGroundElevation());
if (!gh.isNull() && !m_altitude.isNull()) if (!gh.isNull() && !getAltitude().isNull())
{ {
return m_altitude - gh; return getAltitude() - gh;
} }
return { 0, nullptr }; return { 0, nullptr };
} }

View File

@@ -61,7 +61,7 @@ namespace BlackMisc
CAircraftSituation(); CAircraftSituation();
//! Comprehensive constructor //! Comprehensive constructor
CAircraftSituation(const BlackMisc::Geo::CCoordinateGeodetic &position, const BlackMisc::Aviation::CAltitude &altitude, CAircraftSituation(const BlackMisc::Geo::CCoordinateGeodetic &position,
const BlackMisc::Aviation::CHeading &heading = {}, const BlackMisc::Aviation::CHeading &heading = {},
const BlackMisc::PhysicalQuantities::CAngle &pitch = {}, const BlackMisc::PhysicalQuantities::CAngle &pitch = {},
const BlackMisc::PhysicalQuantities::CAngle &bank = {}, const BlackMisc::PhysicalQuantities::CAngle &bank = {},
@@ -70,7 +70,7 @@ namespace BlackMisc
//! Comprehensive constructor //! Comprehensive constructor
CAircraftSituation(const BlackMisc::Aviation::CCallsign &correspondingCallsign, CAircraftSituation(const BlackMisc::Aviation::CCallsign &correspondingCallsign,
const BlackMisc::Geo::CCoordinateGeodetic &position, const BlackMisc::Aviation::CAltitude &altitude, const BlackMisc::Geo::CCoordinateGeodetic &position,
const BlackMisc::Aviation::CHeading &heading = {}, const BlackMisc::Aviation::CHeading &heading = {},
const BlackMisc::PhysicalQuantities::CAngle &pitch = {}, const BlackMisc::PhysicalQuantities::CAngle &pitch = {},
const BlackMisc::PhysicalQuantities::CAngle &bank = {}, const BlackMisc::PhysicalQuantities::CAngle &bank = {},
@@ -102,11 +102,7 @@ namespace BlackMisc
virtual bool isOnGroundGuessed() const; virtual bool isOnGroundGuessed() const;
//! \copydoc Geo::ICoordinateGeodetic::geodeticHeight //! \copydoc Geo::ICoordinateGeodetic::geodeticHeight
const BlackMisc::PhysicalQuantities::CLength &geodeticHeight() const override const BlackMisc::Aviation::CAltitude &geodeticHeight() const override { return this->m_position.geodeticHeight(); }
{
static const BlackMisc::PhysicalQuantities::CLength gh { 0, nullptr };
return gh;
}
//! \copydoc Geo::ICoordinateGeodetic::normalVector //! \copydoc Geo::ICoordinateGeodetic::normalVector
virtual QVector3D normalVector() const override { return this->m_position.normalVector(); } virtual QVector3D normalVector() const override { return this->m_position.normalVector(); }
@@ -130,10 +126,10 @@ namespace BlackMisc
void setHeading(const BlackMisc::Aviation::CHeading &heading) { this->m_heading = heading; } void setHeading(const BlackMisc::Aviation::CHeading &heading) { this->m_heading = heading; }
//! Get altitude (true) //! Get altitude (true)
const BlackMisc::Aviation::CAltitude &getAltitude() const { return this->m_altitude; } const BlackMisc::Aviation::CAltitude &getAltitude() const { return this->m_position.geodeticHeight(); }
//! Set altitude //! Set altitude
void setAltitude(const BlackMisc::Aviation::CAltitude &altitude) { this->m_altitude = altitude; } void setAltitude(const BlackMisc::Aviation::CAltitude &altitude) { this->m_position.setGeodeticHeight(altitude); }
//! Get pitch //! Get pitch
const BlackMisc::PhysicalQuantities::CAngle &getPitch() const { return this->m_pitch; } const BlackMisc::PhysicalQuantities::CAngle &getPitch() const { return this->m_pitch; }
@@ -180,7 +176,6 @@ namespace BlackMisc
private: private:
CCallsign m_correspondingCallsign; CCallsign m_correspondingCallsign;
BlackMisc::Geo::CCoordinateGeodetic m_position; BlackMisc::Geo::CCoordinateGeodetic m_position;
BlackMisc::Aviation::CAltitude m_altitude;
BlackMisc::Aviation::CHeading m_heading; BlackMisc::Aviation::CHeading m_heading;
BlackMisc::PhysicalQuantities::CAngle m_pitch; BlackMisc::PhysicalQuantities::CAngle m_pitch;
BlackMisc::PhysicalQuantities::CAngle m_bank; BlackMisc::PhysicalQuantities::CAngle m_bank;
@@ -193,7 +188,6 @@ namespace BlackMisc
CAircraftSituation, CAircraftSituation,
BLACK_METAMEMBER(correspondingCallsign), BLACK_METAMEMBER(correspondingCallsign),
BLACK_METAMEMBER(position), BLACK_METAMEMBER(position),
BLACK_METAMEMBER(altitude),
BLACK_METAMEMBER(heading), BLACK_METAMEMBER(heading),
BLACK_METAMEMBER(pitch), BLACK_METAMEMBER(pitch),
BLACK_METAMEMBER(bank), BLACK_METAMEMBER(bank),

View File

@@ -238,8 +238,7 @@ namespace XBus
plane->situations.push_frontMaxElements( plane->situations.push_frontMaxElements(
{ {
callsign, callsign,
BlackMisc::Geo::CCoordinateGeodetic(latitude, longitude, 0), BlackMisc::Geo::CCoordinateGeodetic(latitude, longitude, altitude),
CAltitude(altitude, CAltitude::MeanSeaLevel, CLengthUnit::ft()),
CHeading(heading, CHeading::True, CAngleUnit::deg()), CHeading(heading, CHeading::True, CAngleUnit::deg()),
CAngle(pitch, CAngleUnit::deg()), CAngle(pitch, CAngleUnit::deg()),
CAngle(roll, CAngleUnit::deg()), CAngle(roll, CAngleUnit::deg()),

View File

@@ -159,7 +159,7 @@ namespace BlackCoreTest
CAircraftSituation CTestInterpolator::getTestSituation(const CCallsign &callsign, int number, qint64 ts, qint64 deltaT, qint64 offset) CAircraftSituation CTestInterpolator::getTestSituation(const CCallsign &callsign, int number, qint64 ts, qint64 deltaT, qint64 offset)
{ {
CAltitude a(number, CAltitude::MeanSeaLevel, CLengthUnit::m()); CAltitude alt(number, CAltitude::MeanSeaLevel, CLengthUnit::m());
CLatitude lat(number, CAngleUnit::deg()); CLatitude lat(number, CAngleUnit::deg());
CLongitude lng(180.0 + number, CAngleUnit::deg()); CLongitude lng(180.0 + number, CAngleUnit::deg());
CHeading heading(number * 10, CHeading::True, CAngleUnit::deg()); CHeading heading(number * 10, CHeading::True, CAngleUnit::deg());
@@ -167,8 +167,8 @@ namespace BlackCoreTest
CAngle pitch(number, CAngleUnit::deg()); CAngle pitch(number, CAngleUnit::deg());
CSpeed gs(number * 10, CSpeedUnit::km_h()); CSpeed gs(number * 10, CSpeedUnit::km_h());
CAltitude gndElev({ 0, CLengthUnit::m() }, CAltitude::MeanSeaLevel); CAltitude gndElev({ 0, CLengthUnit::m() }, CAltitude::MeanSeaLevel);
CCoordinateGeodetic c(lat, lng, {}); CCoordinateGeodetic c(lat, lng, alt);
CAircraftSituation s(callsign, c, a, heading, pitch, bank, gs, gndElev); CAircraftSituation s(callsign, c, heading, pitch, bank, gs, gndElev);
s.setMSecsSinceEpoch(ts - deltaT * number); // values in past s.setMSecsSinceEpoch(ts - deltaT * number); // values in past
s.setTimeOffsetMs(offset); s.setTimeOffsetMs(offset);
return s; return s;

View File

@@ -179,8 +179,7 @@ namespace BlackMiscTest
CCoordinateGeodetic( CCoordinateGeodetic(
CLatitude::fromWgs84("N 049° 18' 17"), CLatitude::fromWgs84("N 049° 18' 17"),
CLongitude::fromWgs84("E 008° 27' 05"), CLongitude::fromWgs84("E 008° 27' 05"),
CLength(0, CLengthUnit::m())), CAltitude(312, CLengthUnit::ft()))
CAltitude(312, CAltitude::MeanSeaLevel, CLengthUnit::ft())
); );
CAircraftSituation situation2(situation1); CAircraftSituation situation2(situation1);
QVERIFY2(situation1 == situation2, "situations shall be equal"); QVERIFY2(situation1 == situation2, "situations shall be equal");