diff --git a/casic-server-support/src/main/java/com/casic/missiles/modular/system/utils/DirectionUtil.java b/casic-server-support/src/main/java/com/casic/missiles/modular/system/utils/DirectionUtil.java new file mode 100644 index 0000000..1ab647b --- /dev/null +++ b/casic-server-support/src/main/java/com/casic/missiles/modular/system/utils/DirectionUtil.java @@ -0,0 +1,74 @@ +package com.casic.missiles.modular.system.utils; + +/** + * @author a203 + */ +public class DirectionUtil { + + private static final String E = "东"; + private static final String S = "南"; + private static final String W = "西"; + private static final String N = "北"; + private static final String NE = "北东"; + private static final String EN = "东北"; + private static final String NW = "北西"; + private static final String WN = "西北"; + private static final String WS = "西南"; + private static final String SW = "南西"; + private static final String ES = "东南"; + private static final String SE = "南东"; + private static final String EEN = "东东北"; + private static final String ENE = "东北东"; + private static final String NNW = "北北西"; + private static final String NWN = "北西北"; + private static final String WNW = "西北西"; + private static final String WWN = "西西北"; + private static final String EES = "东东南"; + private static final String ESE = "东南东"; + private static final String SES = "南东南"; + private static final String SSE = "南南东"; + private static final String WWS = "西西南"; + private static final String WSW = "西南西"; + private static final String SWS = "南西南"; + private static final String SSW = "南南西"; + + /** + * 方向转角度 + * 正东为0° ,东偏北为正 + * 例如:北北东就是,67.5度 + */ + public static Float toAngle(String dir) { + if (E.equals(dir)) { + return 0f; + } else if (S.equals(dir)) { + return 90f; + } else if (W.equals(dir)) { + return 180f; + } else if (N.equals(dir)) { + return -90f; + } else if (NE.equals(dir) || EN.equals(dir)) { + return 45f; + } else if (NW.equals(dir) || WN.equals(dir)) { + return 135f; + } else if (WS.equals(dir) || SW.equals(dir)) { + return -135f; + } else if (ES.equals(dir) || SE.equals(dir)) { + return -45f; + } else if (EEN.equals(dir) || ENE.equals(dir)) { + return 22.5f; + } else if (NNW.equals(dir) || NWN.equals(dir)) { + return 112.5f; + } else if (WNW.equals(dir) || WWN.equals(dir)) { + return 157.5f; + } else if (EES.equals(dir) || ESE.equals(dir)) { + return -22.5f; + } else if (SES.equals(dir) || SSE.equals(dir)) { + return -67.5f; + } else if (WWS.equals(dir) || WSW.equals(dir)) { + return -157.5f; + } else if (SWS.equals(dir) || SSW.equals(dir)) { + return -112.5f; + } + return 0f; + } +} diff --git a/casic-server-support/src/main/java/com/casic/missiles/modular/system/utils/DirectionUtil.java b/casic-server-support/src/main/java/com/casic/missiles/modular/system/utils/DirectionUtil.java new file mode 100644 index 0000000..1ab647b --- /dev/null +++ b/casic-server-support/src/main/java/com/casic/missiles/modular/system/utils/DirectionUtil.java @@ -0,0 +1,74 @@ +package com.casic.missiles.modular.system.utils; + +/** + * @author a203 + */ +public class DirectionUtil { + + private static final String E = "东"; + private static final String S = "南"; + private static final String W = "西"; + private static final String N = "北"; + private static final String NE = "北东"; + private static final String EN = "东北"; + private static final String NW = "北西"; + private static final String WN = "西北"; + private static final String WS = "西南"; + private static final String SW = "南西"; + private static final String ES = "东南"; + private static final String SE = "南东"; + private static final String EEN = "东东北"; + private static final String ENE = "东北东"; + private static final String NNW = "北北西"; + private static final String NWN = "北西北"; + private static final String WNW = "西北西"; + private static final String WWN = "西西北"; + private static final String EES = "东东南"; + private static final String ESE = "东南东"; + private static final String SES = "南东南"; + private static final String SSE = "南南东"; + private static final String WWS = "西西南"; + private static final String WSW = "西南西"; + private static final String SWS = "南西南"; + private static final String SSW = "南南西"; + + /** + * 方向转角度 + * 正东为0° ,东偏北为正 + * 例如:北北东就是,67.5度 + */ + public static Float toAngle(String dir) { + if (E.equals(dir)) { + return 0f; + } else if (S.equals(dir)) { + return 90f; + } else if (W.equals(dir)) { + return 180f; + } else if (N.equals(dir)) { + return -90f; + } else if (NE.equals(dir) || EN.equals(dir)) { + return 45f; + } else if (NW.equals(dir) || WN.equals(dir)) { + return 135f; + } else if (WS.equals(dir) || SW.equals(dir)) { + return -135f; + } else if (ES.equals(dir) || SE.equals(dir)) { + return -45f; + } else if (EEN.equals(dir) || ENE.equals(dir)) { + return 22.5f; + } else if (NNW.equals(dir) || NWN.equals(dir)) { + return 112.5f; + } else if (WNW.equals(dir) || WWN.equals(dir)) { + return 157.5f; + } else if (EES.equals(dir) || ESE.equals(dir)) { + return -22.5f; + } else if (SES.equals(dir) || SSE.equals(dir)) { + return -67.5f; + } else if (WWS.equals(dir) || WSW.equals(dir)) { + return -157.5f; + } else if (SWS.equals(dir) || SSW.equals(dir)) { + return -112.5f; + } + return 0f; + } +} diff --git a/casic-shelter/src/main/java/com/casic/missiles/modular/system/dto/EnvironmentDTO.java b/casic-shelter/src/main/java/com/casic/missiles/modular/system/dto/EnvironmentDTO.java index e20fcac..a11911f 100644 --- a/casic-shelter/src/main/java/com/casic/missiles/modular/system/dto/EnvironmentDTO.java +++ b/casic-shelter/src/main/java/com/casic/missiles/modular/system/dto/EnvironmentDTO.java @@ -51,7 +51,7 @@ /** * 台风未来移动方向 */ - private String moveDirection; + private Float moveDirection; /** * 机器人与台风中心距离 diff --git a/casic-server-support/src/main/java/com/casic/missiles/modular/system/utils/DirectionUtil.java b/casic-server-support/src/main/java/com/casic/missiles/modular/system/utils/DirectionUtil.java new file mode 100644 index 0000000..1ab647b --- /dev/null +++ b/casic-server-support/src/main/java/com/casic/missiles/modular/system/utils/DirectionUtil.java @@ -0,0 +1,74 @@ +package com.casic.missiles.modular.system.utils; + +/** + * @author a203 + */ +public class DirectionUtil { + + private static final String E = "东"; + private static final String S = "南"; + private static final String W = "西"; + private static final String N = "北"; + private static final String NE = "北东"; + private static final String EN = "东北"; + private static final String NW = "北西"; + private static final String WN = "西北"; + private static final String WS = "西南"; + private static final String SW = "南西"; + private static final String ES = "东南"; + private static final String SE = "南东"; + private static final String EEN = "东东北"; + private static final String ENE = "东北东"; + private static final String NNW = "北北西"; + private static final String NWN = "北西北"; + private static final String WNW = "西北西"; + private static final String WWN = "西西北"; + private static final String EES = "东东南"; + private static final String ESE = "东南东"; + private static final String SES = "南东南"; + private static final String SSE = "南南东"; + private static final String WWS = "西西南"; + private static final String WSW = "西南西"; + private static final String SWS = "南西南"; + private static final String SSW = "南南西"; + + /** + * 方向转角度 + * 正东为0° ,东偏北为正 + * 例如:北北东就是,67.5度 + */ + public static Float toAngle(String dir) { + if (E.equals(dir)) { + return 0f; + } else if (S.equals(dir)) { + return 90f; + } else if (W.equals(dir)) { + return 180f; + } else if (N.equals(dir)) { + return -90f; + } else if (NE.equals(dir) || EN.equals(dir)) { + return 45f; + } else if (NW.equals(dir) || WN.equals(dir)) { + return 135f; + } else if (WS.equals(dir) || SW.equals(dir)) { + return -135f; + } else if (ES.equals(dir) || SE.equals(dir)) { + return -45f; + } else if (EEN.equals(dir) || ENE.equals(dir)) { + return 22.5f; + } else if (NNW.equals(dir) || NWN.equals(dir)) { + return 112.5f; + } else if (WNW.equals(dir) || WWN.equals(dir)) { + return 157.5f; + } else if (EES.equals(dir) || ESE.equals(dir)) { + return -22.5f; + } else if (SES.equals(dir) || SSE.equals(dir)) { + return -67.5f; + } else if (WWS.equals(dir) || WSW.equals(dir)) { + return -157.5f; + } else if (SWS.equals(dir) || SSW.equals(dir)) { + return -112.5f; + } + return 0f; + } +} diff --git a/casic-shelter/src/main/java/com/casic/missiles/modular/system/dto/EnvironmentDTO.java b/casic-shelter/src/main/java/com/casic/missiles/modular/system/dto/EnvironmentDTO.java index e20fcac..a11911f 100644 --- a/casic-shelter/src/main/java/com/casic/missiles/modular/system/dto/EnvironmentDTO.java +++ b/casic-shelter/src/main/java/com/casic/missiles/modular/system/dto/EnvironmentDTO.java @@ -51,7 +51,7 @@ /** * 台风未来移动方向 */ - private String moveDirection; + private Float moveDirection; /** * 机器人与台风中心距离 diff --git a/casic-shelter/src/main/java/com/casic/missiles/modular/system/utils/EncodeData.java b/casic-shelter/src/main/java/com/casic/missiles/modular/system/utils/EncodeData.java index 2912534..57b5667 100644 --- a/casic-shelter/src/main/java/com/casic/missiles/modular/system/utils/EncodeData.java +++ b/casic-shelter/src/main/java/com/casic/missiles/modular/system/utils/EncodeData.java @@ -49,8 +49,7 @@ dto.setRadius10(pointBean.getRadius10()); dto.setRadius12(pointBean.getRadius12()); dto.setMoveSpeed(pointBean.getMoveSpeed()); - //TODO 需要计算为角度 - dto.setMoveDirection(pointBean.getMoveDirection()); + dto.setMoveDirection(DirectionUtil.toAngle(pointBean.getMoveDirection())); //机器人与台风中心距离 double distance = distance(lng, lat, robotLng, robotLat);