Skip to content
GitLab
Projects
Groups
Snippets
/
Help
Help
Support
Community forum
Keyboard shortcuts
?
Submit feedback
Contribute to GitLab
Sign in
Toggle navigation
Menu
Open sidebar
Valentin Platzgummer
qgroundcontrol
Commits
b3ea3c2d
Commit
b3ea3c2d
authored
Sep 04, 2019
by
Don Gagne
Browse files
FW Landing slope heights display
parent
980d4aa4
Changes
4
Hide whitespace changes
Inline
Side-by-side
qgroundcontrol.qrc
View file @
b3ea3c2d
...
...
@@ -81,6 +81,7 @@
<file alias="QGroundControl/Controls/FWLandingPatternMapVisual.qml">src/PlanView/FWLandingPatternMapVisual.qml</file>
<file alias="QGroundControl/Controls/GeoFenceEditor.qml">src/PlanView/GeoFenceEditor.qml</file>
<file alias="QGroundControl/Controls/GeoFenceMapVisuals.qml">src/PlanView/GeoFenceMapVisuals.qml</file>
<file alias="QGroundControl/Controls/HeightIndicator.qml">src/QmlControls/HeightIndicator.qml</file>
<file alias="QGroundControl/Controls/IndicatorButton.qml">src/QmlControls/IndicatorButton.qml</file>
<file alias="QGroundControl/Controls/JoystickThumbPad.qml">src/QmlControls/JoystickThumbPad.qml</file>
<file alias="QGroundControl/Controls/LogReplayStatusBar.qml">src/QmlControls/LogReplayStatusBar.qml</file>
...
...
src/PlanView/FWLandingPatternMapVisual.qml
View file @
b3ea3c2d
...
...
@@ -11,6 +11,7 @@ import QtQuick 2.3
import
QtQuick
.
Controls
1.2
import
QtLocation
5.3
import
QtPositioning
5.3
import
QtQuick
.
Layouts
1.11
import
QGroundControl
1.0
import
QGroundControl
.
ScreenTools
1.0
...
...
@@ -29,13 +30,28 @@ Item {
readonly
property
real
_landingWidthMeters
:
15
readonly
property
real
_landingLengthMeters
:
100
property
var
_missionItem
:
object
property
var
_missionItem
:
object
property
var
_mouseArea
property
var
_dragAreas
:
[
]
property
var
_dragAreas
:
[
]
property
var
_flightPath
property
real
_landingAreaBearing
:
_missionItem
.
landingCoordinate
.
azimuthTo
(
_missionItem
.
loiterTangentCoordinate
)
property
real
_landingAreaBearing
:
_missionItem
.
landingCoordinate
.
azimuthTo
(
_missionItem
.
loiterTangentCoordinate
)
property
var
_loiterPointObject
property
var
_landingPointObject
property
real
_transitionAltitudeMeters
property
real
_midSlopeAltitudeMeters
property
real
_landingAltitudeMeters
:
_missionItem
.
landingAltitude
.
rawValue
property
real
_loiterAltitudeMeters
:
_missionItem
.
loiterAltitude
.
rawValue
function
_calcGlideSlopeHeights
()
{
var
adjacent
=
_missionItem
.
landingCoordinate
.
distanceTo
(
_missionItem
.
loiterTangentCoordinate
)
var
opposite
=
_loiterAltitudeMeters
-
_landingAltitudeMeters
var
angleRadians
=
Math
.
atan
(
opposite
/
adjacent
)
var
transitionDistance
=
_landingLengthMeters
/
2
var
glideSlopeDistance
=
adjacent
-
transitionDistance
_transitionAltitudeMeters
=
Math
.
tan
(
angleRadians
)
*
(
transitionDistance
)
_midSlopeAltitudeMeters
=
Math
.
tan
(
angleRadians
)
*
(
transitionDistance
+
(
glideSlopeDistance
/
2
))
}
function
hideItemVisuals
()
{
objMgr
.
destroyObjects
()
...
...
@@ -46,7 +62,9 @@ Item {
_loiterPointObject
=
objMgr
.
createObject
(
loiterPointComponent
,
map
,
true
/* parentObjectIsMap */
)
_landingPointObject
=
objMgr
.
createObject
(
landingPointComponent
,
map
,
true
/* parentObjectIsMap */
)
var
rgComponents
=
[
flightPathComponent
,
loiterRadiusComponent
,
landingAreaComponent
,
landingAreaLabelComponent
,
glideSlopeComponent
,
glideSlopeLabelComponent
]
var
rgComponents
=
[
flightPathComponent
,
loiterRadiusComponent
,
landingAreaComponent
,
landingAreaLabelComponent
,
glideSlopeComponent
,
glideSlopeLabelComponent
,
transitionHeightComponent
,
midGlideSlopeHeightComponent
,
approachHeightComponent
]
objMgr
.
createObjects
(
rgComponents
,
map
,
true
/* parentObjectIsMap */
)
}
}
...
...
@@ -105,6 +123,9 @@ Item {
hideItemVisuals
()
}
on_LandingAltitudeMetersChanged
:
_calcGlideSlopeHeights
()
on_LoiterAltitudeMetersChanged
:
_calcGlideSlopeHeights
()
Connections
{
target
:
_missionItem
...
...
@@ -139,8 +160,15 @@ Item {
}
}
onLandingCoordinateChanged
:
_setFlightPath
()
onLoiterTangentCoordinateChanged
:
_setFlightPath
()
onLandingCoordinateChanged
:
{
_calcGlideSlopeHeights
()
_setFlightPath
()
}
onLoiterTangentCoordinateChanged
:
{
_calcGlideSlopeHeights
()
_setFlightPath
()
}
}
// Mouse area to capture landing point coordindate
...
...
@@ -295,7 +323,7 @@ Item {
id
:
glideSlopeLabelComponent
MapQuickItem
{
anchorPoint.x
:
0
anchorPoint.x
:
sourceItem
.
_rawBearing
>
180
?
sourceItem
.
contentWidth
:
0
anchorPoint.y
:
sourceItem
.
contentHeight
/
2
z
:
QGroundControl
.
zOrderMapItems
visible
:
_missionItem
.
isCurrentItem
...
...
@@ -320,7 +348,7 @@ Item {
}
transform
:
Rotation
{
origin.x
:
0
origin.x
:
sourceItem
.
_rawBearing
>
180
?
sourceItem
.
contentWidth
:
0
origin.y
:
glideSlopeLabel
.
contentHeight
/
2
angle
:
glideSlopeLabel
.
_adjustedBearing
}
...
...
@@ -402,4 +430,84 @@ Item {
}
}
}
Component
{
id
:
transitionHeightComponent
MapQuickItem
{
anchorPoint.x
:
sourceItem
.
width
/
2
anchorPoint.y
:
0
z
:
QGroundControl
.
zOrderMapItems
visible
:
_missionItem
.
isCurrentItem
sourceItem
:
HeightIndicator
{
heightText
:
QGroundControl
.
metersToAppSettingsDistanceUnits
(
_transitionAltitudeMeters
).
toFixed
(
1
)
+
"
"
+
QGroundControl
.
appSettingsDistanceUnitsString
}
function
recalc
()
{
var
centeredCoordinate
=
_missionItem
.
landingCoordinate
.
atDistanceAndAzimuth
(
_landingLengthMeters
/
2
,
_landingAreaBearing
)
var
angleIncrement
=
_landingAreaBearing
>
180
?
-
90
:
90
coordinate
=
centeredCoordinate
.
atDistanceAndAzimuth
(
_landingWidthMeters
,
_landingAreaBearing
+
angleIncrement
)
}
Component.onCompleted
:
recalc
()
Connections
{
target
:
_missionItem
onLandingCoordinateChanged
:
recalc
()
onLoiterTangentCoordinateChanged
:
recalc
()
}
}
}
Component
{
id
:
midGlideSlopeHeightComponent
MapQuickItem
{
anchorPoint.x
:
sourceItem
.
width
/
2
anchorPoint.y
:
0
z
:
QGroundControl
.
zOrderMapItems
visible
:
_missionItem
.
isCurrentItem
sourceItem
:
HeightIndicator
{
heightText
:
QGroundControl
.
metersToAppSettingsDistanceUnits
(
_midSlopeAltitudeMeters
).
toFixed
(
1
)
+
"
"
+
QGroundControl
.
appSettingsDistanceUnitsString
}
function
recalc
()
{
var
transitionCoordinate
=
_missionItem
.
landingCoordinate
.
atDistanceAndAzimuth
(
_landingLengthMeters
/
2
,
_landingAreaBearing
)
var
halfDistance
=
transitionCoordinate
.
distanceTo
(
_missionItem
.
loiterTangentCoordinate
)
/
2
var
centeredCoordinate
=
transitionCoordinate
.
atDistanceAndAzimuth
(
halfDistance
,
_landingAreaBearing
)
var
angleIncrement
=
_landingAreaBearing
>
180
?
-
90
:
90
coordinate
=
centeredCoordinate
.
atDistanceAndAzimuth
(
_landingWidthMeters
/
2
,
_landingAreaBearing
+
angleIncrement
)
}
Component.onCompleted
:
recalc
()
Connections
{
target
:
_missionItem
onLandingCoordinateChanged
:
recalc
()
onLoiterTangentCoordinateChanged
:
recalc
()
}
}
}
Component
{
id
:
approachHeightComponent
MapQuickItem
{
anchorPoint.x
:
sourceItem
.
width
/
2
anchorPoint.y
:
0
z
:
QGroundControl
.
zOrderMapItems
visible
:
_missionItem
.
isCurrentItem
coordinate
:
_missionItem
.
loiterTangentCoordinate
sourceItem
:
HeightIndicator
{
heightText
:
_missionItem
.
loiterAltitude
.
value
.
toFixed
(
1
)
+
"
"
+
QGroundControl
.
appSettingsDistanceUnitsString
}
}
}
}
src/QmlControls/HeightIndicator.qml
0 → 100644
View file @
b3ea3c2d
import
QtQuick
2.3
import
QtQuick
.
Controls
1.2
import
QtQuick
.
Layouts
1.11
import
QGroundControl
.
ScreenTools
1.0
ColumnLayout
{
spacing
:
0
property
color
textColor
:
"
white
"
property
string
heightText
:
"
30 ft
"
Rectangle
{
width
:
ScreenTools
.
defaultFontPixelWidth
*
3
height
:
1
color
:
textColor
Layout.alignment
:
Qt
.
AlignHCenter
}
Rectangle
{
width
:
1
height
:
ScreenTools
.
defaultFontPixelWidth
*
1
color
:
textColor
Layout.alignment
:
Qt
.
AlignHCenter
}
QGCLabel
{
text
:
heightText
color
:
textColor
Layout.alignment
:
Qt
.
AlignHCenter
}
Rectangle
{
width
:
1
height
:
ScreenTools
.
defaultFontPixelWidth
*
1
color
:
textColor
Layout.alignment
:
Qt
.
AlignHCenter
}
Rectangle
{
width
:
ScreenTools
.
defaultFontPixelWidth
*
3
height
:
1
color
:
textColor
Layout.alignment
:
Qt
.
AlignHCenter
}
}
src/QmlControls/QGroundControl/Controls/qmldir
View file @
b3ea3c2d
...
...
@@ -19,6 +19,7 @@ FlightModeMenu 1.0 FlightModeMenu.qml
GeoFenceEditor 1.0 GeoFenceEditor.qml
GeoFenceMapVisuals 1.0 GeoFenceMapVisuals.qml
HackFileDialog 1.0 HackFileDialog.qml
HeightIndicator 1.0 HeightIndicator.qml
IndicatorButton 1.0 IndicatorButton.qml
JoystickThumbPad 1.0 JoystickThumbPad.qml
LogReplayStatusBar 1.0 LogReplayStatusBar.qml
...
...
Write
Preview
Supports
Markdown
0%
Try again
or
attach a new file
.
Cancel
You are about to add
0
people
to the discussion. Proceed with caution.
Finish editing this message first!
Cancel
Please
register
or
sign in
to comment