Skip to content

Commit

Permalink
improve the readable direction
Browse files Browse the repository at this point in the history
  • Loading branch information
janbar committed Oct 2, 2024
1 parent c4656f5 commit 215acef
Show file tree
Hide file tree
Showing 4 changed files with 64 additions and 6 deletions.
16 changes: 12 additions & 4 deletions gui/controls2_515/Tracking.qml
Original file line number Diff line number Diff line change
Expand Up @@ -223,10 +223,18 @@ PopOver {
color: styleMap.popover.highlightedColor
font.pixelSize: units.fs("medium")
}
Label {
text: Converter.readableDegreeGeocaching(180.0 * Tracker.bearing / Math.PI)
font.pixelSize: units.fs("large")
color: foregroundColor
Row {
spacing: units.gu(1)
Label {
text: Converter.readableDegree(180.0 * Tracker.bearing / Math.PI)
font.pixelSize: units.fs("large")
color: foregroundColor
}
Label {
text: "(" + Converter.readableCardinal(180.0 * Tracker.bearing / Math.PI) + ")"
font.pixelSize: units.fs("large")
color: foregroundColor
}
}
}
}
Expand Down
2 changes: 1 addition & 1 deletion simulator/simulator.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -427,7 +427,7 @@ void Simulator::onStatusRequested()
QGeoCoordinate coord = _positionSource->lastKnownPosition().coordinate();
QString pos = _converter.readableCoordinatesNumeric(coord.latitude(), coord.longitude());
QString alt = _converter.readableElevation(coord.altitude());
QString ang = _converter.readableDegree(_compassSource->reading()->value(0).toDouble());
QString ang = _converter.readableDegreeDMS(_compassSource->reading()->value(0).toDouble());
fprintf(stdout, "Pos %s Alt %s Ang %s\n",
pos.toStdString().c_str(),
alt.toStdString().c_str(),
Expand Down
50 changes: 49 additions & 1 deletion src/converter.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -185,7 +185,7 @@ QString Converter::readableDegreeGeocaching(double degree) const
.arg(minutes, 6, 'f', 3, '0');
}

QString Converter::readableDegree(double degree) const
QString Converter::readableDegreeDMS(double degree) const
{
double minutes = (degree - std::floor(degree)) * 60.0;
double seconds = (minutes - std::floor(minutes)) * 60.0;
Expand All @@ -195,6 +195,54 @@ QString Converter::readableDegree(double degree) const
.arg(seconds, 5, 'f', 2, '0');
}

QString Converter::readableDegree(double degree) const
{
return QString("%1°").arg(std::round(degree), 0, 'f', 0);
}

QString Converter::readableCardinal(double degree) const
{
double n = std::round(std::remainder(degree, 360.0) / 22.5);
int c = (n < 0 ? int(n)+16 : int(n));
switch(c)
{
case 0:
return readableBearing("N");
case 1:
return readableBearing("N") + " " + readableBearing("NE");
case 2:
return readableBearing("NE");
case 3:
return readableBearing("E") + " " + readableBearing("NE");
case 4:
return readableBearing("E");
case 5:
return readableBearing("E") + " " + readableBearing("SE");
case 6:
return readableBearing("SE");
case 7:
return readableBearing("S") + " " + readableBearing("SE");
case 8:
return readableBearing("S");
case 9:
return readableBearing("S") + " " + readableBearing("SW");
case 10:
return readableBearing("SW");
case 11:
return readableBearing("W") + " " + readableBearing("SW");
case 12:
return readableBearing("W");
case 13:
return readableBearing("W") + " " + readableBearing("NW");
case 14:
return readableBearing("NW");
case 15:
return readableBearing("N") + " " + readableBearing("NW");
default:
return QString();
}
}

QString Converter::readableCoordinatesGeocaching(double lat, double lon) const
{
QString str;
Expand Down
2 changes: 2 additions & 0 deletions src/converter.h
Original file line number Diff line number Diff line change
Expand Up @@ -52,7 +52,9 @@ class Converter : public QObject
Q_INVOKABLE QString panelDurationHM(int seconds) const;
Q_INVOKABLE QString panelDurationHMS(int seconds) const;
Q_INVOKABLE QString readableDegreeGeocaching(double degree) const;
Q_INVOKABLE QString readableDegreeDMS(double degree) const;
Q_INVOKABLE QString readableDegree(double degree) const;
Q_INVOKABLE QString readableCardinal(double degree) const;
Q_INVOKABLE QString readableCoordinatesGeocaching(double lat, double lon) const;
Q_INVOKABLE QString readableCoordinatesNumeric(double lat, double lon) const;
Q_INVOKABLE QString readableCoordinates(double lat, double lon) const;
Expand Down

0 comments on commit 215acef

Please sign in to comment.