8 visible: QGroundControl.settingsManager.flyViewSettings.showObstacleDistanceOverlay.value > 0 && _activeVehicle && _activeVehicle.objectAvoidance.available
10 property var showText: true
11 property var interval: 200
12 property var _ranges: []
13 property var _incrementDeg: 0
14 property var _offsetDeg: 0
15 property var _heading: 0
16 property var _maxRadiusMeters: 0
17 property var _rangesLen: 0
18 property var _degToRangeIdx: function(deg, useHeading) {
19 return rangeIdx(deg, _incrementDeg, _offsetDeg, _rangesLen, useHeading ? _heading : 0)
21 property var _rangeToShow: function(range) {
22 const feets = QGroundControl.settingsManager.unitsSettings.horizontalDistanceUnits.value === UnitsSettings.HorizontalDistanceUnitsFeet
23 range = feets ? range * 3.2808399 : range
24 return range.toFixed(2)
27 // Converts degrees to index from ranges
28 function rangeIdx(deg, increment, offset, len, heading) {
29 var degrees = deg + offset - heading
30 if (degrees > 360) degrees = degrees - 360
31 if (degrees < 0) degrees = degrees + 360;
32 const i = degrees / increment
33 return (len + Math.ceil(i)) % len
37 interval: canvas.interval
40 onTriggered: canvas.requestPaint()
47 var ctx = getContext("2d");
50 _ranges = _activeVehicle.objectAvoidance.distances
51 _incrementDeg = _activeVehicle.objectAvoidance.increment
52 if (_ranges.length == 0 || _incrementDeg == 0)
55 _offsetDeg = _activeVehicle.objectAvoidance.angleOffset
56 _heading = _activeVehicle.heading.value
57 _maxRadiusMeters = _activeVehicle.objectAvoidance.maxDistance / 100
58 _rangesLen = 360.0 / _incrementDeg
59 if (_rangesLen > _ranges.length)
60 _rangesLen = _ranges.length
62 paintObstacleOverlay(ctx)