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 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); } }