Skip to content
Projects
Groups
Snippets
Help
Loading...
Help
Support
Submit feedback
Contribute to GitLab
Sign in
Toggle navigation
Q
qgroundcontrol
Project
Project
Details
Activity
Releases
Cycle Analytics
Repository
Repository
Files
Commits
Branches
Tags
Contributors
Graph
Compare
Charts
Issues
0
Issues
0
List
Boards
Labels
Milestones
Merge Requests
0
Merge Requests
0
CI / CD
CI / CD
Pipelines
Jobs
Schedules
Charts
Wiki
Wiki
Snippets
Snippets
Members
Members
Collapse sidebar
Close sidebar
Activity
Graph
Charts
Create a new issue
Jobs
Commits
Issue Boards
Open sidebar
Valentin Platzgummer
qgroundcontrol
Commits
b3ea3c2d
Commit
b3ea3c2d
authored
Sep 04, 2019
by
Don Gagne
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
parent
980d4aa4
Changes
4
Hide whitespace changes
Inline
Side-by-side
Showing
4 changed files
with
164 additions
and
8 deletions
+164
-8
qgroundcontrol.qrc
qgroundcontrol.qrc
+1
-0
FWLandingPatternMapVisual.qml
src/PlanView/FWLandingPatternMapVisual.qml
+116
-8
HeightIndicator.qml
src/QmlControls/HeightIndicator.qml
+46
-0
qmldir
src/QmlControls/QGroundControl/Controls/qmldir
+1
-0
No files found.
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
Markdown
is supported
0%
Try again
or
attach a new file
Attach a 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