吉安感知网项目-后端
xiebin
2026-01-06 d207a86cdf1ab52ef8cb7cd83bad8fceab8038cf
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
package org.sxkj.common.geo.utils;
 
import lombok.Data;
 
import java.util.HashMap;
import java.util.Map;
 
/**
 * 云台角度计算
 */
public class GimbalAngles {
 
    /**
     * 根据云台角度计算当前 地图上的角度 0-360
     *
     * @param options
     * @return
     */
    public static double yawAngle(GimbalOptions options) {
        double gimbalYaw = options != null && options.getGimbalYaw() != null ? options.getGimbalYaw() : 0;
        double attitudeHead = options != null && options.getAttitudeHead() != null ? options.getAttitudeHead() : 0;
 
        double yaw;
        if (gimbalYaw > 180) {
            yaw = gimbalYaw;
        } else {
            yaw = gimbalYaw - attitudeHead;
        }
 
        double result = 0;
        if (yaw < 0) {
            result = yaw + 360;
        } else if (yaw > 0) {
            result = yaw;
        }
 
        if ((yaw > -2 && yaw < 2) || (int) attitudeHead == (int) gimbalYaw) {
            result = attitudeHead < 0 ? 180 + (180 + attitudeHead) : attitudeHead;
        }
 
        return result ;
    }
 
 
 
 
    // Pitch angle calculation
    private static double pitchAngle(GimbalOptions options) {
        double gimbalPitch = options != null && options.getGimbalPitch() != null ? options.getGimbalPitch() : 0;
        return gimbalPitch;
    }
 
    // Example options class
    @Data
    public static class GimbalOptions {
        private Double gimbalYaw;
        private Double attitudeHead;
        private Double gimbalPitch;
 
    }
 
    /**
     * 无人机转向 需要加多少度减多少度
     */
    public static final Map<String, Integer> DRONE_DIRECTION_ANGLES = new HashMap<>();
 
    static {
        DRONE_DIRECTION_ANGLES.put("左", -90);
        DRONE_DIRECTION_ANGLES.put("右", 90);
        DRONE_DIRECTION_ANGLES.put("前", 0);
        DRONE_DIRECTION_ANGLES.put("后", 180);
 
    }
 
}