|
@@ -19,6 +19,7 @@
|
|
|
// Debug Makro
|
|
|
#define DEB(expr) \
|
|
|
qDebug() << __PRETTY_FUNCTION__ << "\t" << expr
|
|
|
+
|
|
|
/*!
|
|
|
* \brief Calc::blocktime Calculates Block Time for a given departure and arrival time
|
|
|
* \param tofb QTime Time Off Blocks
|
|
@@ -337,9 +338,11 @@ double Calc::solarElevation(QDateTime utc_time_point, double lat, double lon)
|
|
|
* \param dest - ICAO 4-letter Code of Destination Airport
|
|
|
* \param departureTime - QDateTime of Departure (UTC)
|
|
|
* \param tblk - Total block time in minutes
|
|
|
+ * \param nightAngle - the solar elevation angle where night conditons exist.
|
|
|
+ * Default -6 (end of civil evening twilight)
|
|
|
* \return Total number of minutes under night flying conditions
|
|
|
*/
|
|
|
-int Calc::calculateNightTime(QString dept, QString dest, QDateTime departureTime, int tblk)
|
|
|
+int Calc::calculateNightTime(QString dept, QString dest, QDateTime departureTime, int tblk, int nightAngle)
|
|
|
{
|
|
|
QVector<QString> columns = {"lat", "long"};
|
|
|
QVector<QString> deptCoordinates = Db::multiSelect(columns, "airports", "icao", dept,
|
|
@@ -369,11 +372,12 @@ int Calc::calculateNightTime(QString dept, QString dest, QDateTime departureTime
|
|
|
int nightTime = 0;
|
|
|
for (int i = 0; i < tblk ; i++) {
|
|
|
if (solarElevation(departureTime.addSecs(60 * i), radToDeg(route[i][0]),
|
|
|
- radToDeg(route[i][1])) < -0.6) {
|
|
|
+ radToDeg(route[i][1])) < nightAngle) {
|
|
|
nightTime ++;
|
|
|
}
|
|
|
}
|
|
|
- qDebug() << "Calc::CalculateNightTime result: " << nightTime << " minutes night flying time.";
|
|
|
+ qDebug() << "Calc::CalculateNightTime result for angle: "<< nightAngle
|
|
|
+ << " :" << nightTime << " minutes night flying time.";
|
|
|
return nightTime;
|
|
|
}
|
|
|
|
|
@@ -452,6 +456,8 @@ void Calc::updateAutoTimes(int acft_id)
|
|
|
*/
|
|
|
void Calc::updateNightTimes()
|
|
|
{
|
|
|
+ QSettings settings;
|
|
|
+ int nightAngle = settings.value("flightlogging/nightangle").toInt();
|
|
|
QVector<QString> columns = {"id"};
|
|
|
auto flights = Db::multiSelect(columns,"flights");
|
|
|
for (const auto& item : flights) {
|
|
@@ -462,7 +468,8 @@ void Calc::updateNightTimes()
|
|
|
flt->data.insert("tNIGHT", QString::number(calculateNightTime(flt->data.value("dept"),
|
|
|
flt->data.value("dest"),
|
|
|
dateTime,
|
|
|
- flt->data.value("tblk").toInt())));
|
|
|
+ flt->data.value("tblk").toInt(),
|
|
|
+ nightAngle)));
|
|
|
flt->commit();
|
|
|
}
|
|
|
}
|