19 if(std::isfinite(message->increment_f) && message->increment_f > 0) {
20 _increment =
static_cast<qreal
>(message->increment_f);
22 _increment =
static_cast<qreal
>(message->increment);
24 _minDistance = message->min_distance;
25 _maxDistance = message->max_distance;
26 _angleOffset =
static_cast<qreal
>(message->angle_offset);
27 if(_distances.count() == 0) {
28 for(
int i = 0; i < MAVLINK_MSG_OBSTACLE_DISTANCE_FIELD_DISTANCES_LEN; i++) {
29 _distances.append(
static_cast<int>(message->distances[i]));
32 for(
int i = 0; i < MAVLINK_MSG_OBSTACLE_DISTANCE_FIELD_DISTANCES_LEN; i++) {
33 _distances[i] =
static_cast<int>(message->distances[i]);
39 auto* sp = qobject_cast<VehicleSetpointFactGroup*>(_vehicle->
setpointFactGroup());
40 qreal startAngle = sp->yaw()->rawValue().toDouble() + _angleOffset;
41 for(
int i = 0; i < MAVLINK_MSG_OBSTACLE_DISTANCE_FIELD_DISTANCES_LEN; i++) {
42 if(_distances[i] < _maxDistance && message->distances[i] != UINT16_MAX) {
43 qreal d =
static_cast<qreal
>(_distances[i]);
44 d = d /
static_cast<qreal
>(_maxDistance);
45 qreal a = (_increment * i) - startAngle;
46 if(a < 0) a = a + 360;
47 qreal rd = (M_PI / 180.0) * a;
48 QPointF p = QPointF(d * cos(rd), d * sin(rd));
50 _objDistance.append(d);