Commit c7ea53d4 authored by DonLakeFlyer's avatar DonLakeFlyer

Rotate landing area

parent 042f02b5
...@@ -36,8 +36,8 @@ Item { ...@@ -36,8 +36,8 @@ Item {
readonly property int _flightPathIndex: 0 readonly property int _flightPathIndex: 0
readonly property int _loiterPointIndex: 1 readonly property int _loiterPointIndex: 1
readonly property int _loiterRadiusIndex: 2 readonly property int _loiterRadiusIndex: 2
readonly property int _landPointIndex: 3 readonly property int _landingAreaIndex: 3
readonly property int _landingAreaIndex: 4 readonly property int _landPointIndex: 4
function hideItemVisuals() { function hideItemVisuals() {
for (var i=0; i<_itemVisuals.length; i++) { for (var i=0; i<_itemVisuals.length; i++) {
...@@ -57,12 +57,12 @@ Item { ...@@ -57,12 +57,12 @@ Item {
itemVisual = loiterRadiusComponent.createObject(map) itemVisual = loiterRadiusComponent.createObject(map)
map.addMapItem(itemVisual) map.addMapItem(itemVisual)
_itemVisuals[_loiterRadiusIndex] = itemVisual _itemVisuals[_loiterRadiusIndex] = itemVisual
itemVisual = landPointComponent.createObject(map)
map.addMapItem(itemVisual)
_itemVisuals[_landPointIndex] = itemVisual
itemVisual = landingAreaComponent.createObject(map) itemVisual = landingAreaComponent.createObject(map)
map.addMapItem(itemVisual) map.addMapItem(itemVisual)
_itemVisuals[_landingAreaIndex] = itemVisual _itemVisuals[_landingAreaIndex] = itemVisual
itemVisual = landPointComponent.createObject(map)
map.addMapItem(itemVisual)
_itemVisuals[_landPointIndex] = itemVisual
} }
} }
...@@ -258,20 +258,36 @@ Item { ...@@ -258,20 +258,36 @@ Item {
Component { Component {
id: landingAreaComponent id: landingAreaComponent
MapRectangle { MapPolygon {
z: QGroundControl.zOrderMapItems z: QGroundControl.zOrderMapItems
border.width: 1 border.width: 1
border.color: "black" border.color: "black"
color: "green" color: "green"
opacity: 0.5 opacity: 0.5
topLeft: _missionItem.landingCoordinate.atDistanceAndAzimuth(hypotenuse, -angleDegrees)
bottomRight: _missionItem.landingCoordinate.atDistanceAndAzimuth(hypotenuse, 180 - angleDegrees)
readonly property real landingWidth: 10 readonly property real landingWidth: 15
readonly property real landingLength: 100 readonly property real landingLength: 100
readonly property real angleRadians: Math.atan((landingWidth / 2) / (landingLength / 2)) readonly property real angleRadians: Math.atan((landingWidth / 2) / (landingLength / 2))
readonly property real angleDegrees: angleRadians * (180 / Math.PI) readonly property real angleDegrees: (angleRadians * (180 / Math.PI))
readonly property real hypotenuse: (landingWidth / 2) / Math.sin(angleRadians) readonly property real hypotenuse: (landingWidth / 2) / Math.sin(angleRadians)
property real landingAreaAngle: _missionItem.landingCoordinate.azimuthTo(_missionItem.loiterTangentCoordinate)
function calcPoly() {
path = [ ]
addCoordinate(_missionItem.landingCoordinate.atDistanceAndAzimuth(hypotenuse, landingAreaAngle - angleDegrees))
addCoordinate(_missionItem.landingCoordinate.atDistanceAndAzimuth(hypotenuse, landingAreaAngle + angleDegrees))
addCoordinate(_missionItem.landingCoordinate.atDistanceAndAzimuth(hypotenuse, landingAreaAngle + (180 - angleDegrees)))
addCoordinate(_missionItem.landingCoordinate.atDistanceAndAzimuth(hypotenuse, landingAreaAngle - (180 - angleDegrees)))
}
Component.onCompleted: calcPoly()
Connections {
target: _missionItem
onLandingCoordinateChanged: calcPoly()
onLoiterTangentCoordinateChanged: calcPoly()
}
} }
} }
} }
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment