From e745dd38c5a413eaa000c7c5434621fbcd1800d5 Mon Sep 17 00:00:00 2001
From: 于紫祥_1901 <email@yuzixiang_1910>
Date: Wed, 23 Dec 2020 13:55:07 +0800
Subject: [PATCH] Merge remote-tracking branch 'origin/master'

---
 src/main/java/com/moral/util/WindUtils.java |   58 ++++++++++++++++++++++++++++++++++++++--------------------
 1 files changed, 38 insertions(+), 20 deletions(-)

diff --git a/src/main/java/com/moral/util/WindUtils.java b/src/main/java/com/moral/util/WindUtils.java
index 01d7073..80de618 100644
--- a/src/main/java/com/moral/util/WindUtils.java
+++ b/src/main/java/com/moral/util/WindUtils.java
@@ -1,5 +1,6 @@
 package com.moral.util;
 
+import java.util.ArrayList;
 import java.util.HashMap;
 import java.util.List;
 import java.util.Map;
@@ -29,26 +30,26 @@
                 u1 = 0;
                 v1 = wind_speed*1;
             }else if (0<wind_direction&&wind_direction<90){
-                u1 = wind_speed*Math.sin(wind_direction);
-                v1 = wind_speed*Math.cos(wind_direction);
+                u1 = wind_speed*Math.sin(Math.toRadians(wind_direction));
+                v1 = wind_speed*Math.cos(Math.toRadians(wind_direction));
             }else if (wind_direction == 90){
                 u1 = wind_speed*1;
                 v1 = 0;
             }else if (90<wind_direction&&wind_direction<180){
-                u1 = wind_speed*Math.sin(180-wind_direction);
-                v1 = -1*wind_speed*Math.cos(180-wind_direction);
+                u1 = wind_speed*Math.sin(Math.toRadians(180-wind_direction));
+                v1 = -1*wind_speed*Math.cos(Math.toRadians(180-wind_direction));
             }else if (wind_direction == 180){
                 u1 = 0;
                 v1 = wind_speed*-1;
             }else if (180<wind_direction&&wind_direction<270){
-                u1 = -1*wind_speed*Math.sin(wind_direction-180);
-                v1 = -1*wind_speed*Math.cos(wind_direction-180);
+                u1 = -1*wind_speed*Math.sin(Math.toRadians(wind_direction-180));
+                v1 = -1*wind_speed*Math.cos(Math.toRadians(wind_direction-180));
             }else if (wind_direction == 270){
                 u1 = wind_speed*-1;
                 v1 = 0;
             }else if (270<wind_direction&&wind_direction<360){
-                u1 = wind_speed*Math.sin(360-wind_direction);
-                v1 = -1*wind_speed*Math.cos(360-wind_direction);
+                u1 = wind_speed*Math.sin(Math.toRadians(360-wind_direction));
+                v1 = -1*wind_speed*Math.cos(Math.toRadians(360-wind_direction));
             }
             u = u+u1;
             v = v+v1;
@@ -59,30 +60,47 @@
             windDirectionSpeedMap.put("wind_speed",0.0);
         }else if (u==0&&v>0){
             windDirectionSpeedMap.put("wind_direction",0.0);
-            windDirectionSpeedMap.put("wind_speed",v);
+            windDirectionSpeedMap.put("wind_speed",v/list.size());
         }else if (u>0&&v>0){
-            windDirectionSpeedMap.put("wind_direction",Math.atan2(u,v));
-            windDirectionSpeedMap.put("wind_speed",Math.sqrt(u*u+v*v));
+            windDirectionSpeedMap.put("wind_direction",Math.toDegrees(Math.atan2(u,v)));
+            windDirectionSpeedMap.put("wind_speed",Math.sqrt(u*u+v*v)/list.size());
         }else if (u>0&&v==0){
             windDirectionSpeedMap.put("wind_direction",90.0);
-            windDirectionSpeedMap.put("wind_speed",u);
+            windDirectionSpeedMap.put("wind_speed",u/list.size());
         }else if (u>0&&v<0){
-            windDirectionSpeedMap.put("wind_direction",Math.atan2(-v,u)+90);
-            windDirectionSpeedMap.put("wind_speed",Math.sqrt(u*u+v*v));
+            windDirectionSpeedMap.put("wind_direction",Math.toDegrees(Math.atan2(-v,u))+90);
+            windDirectionSpeedMap.put("wind_speed",Math.sqrt(u*u+v*v)/list.size());
         }else if (u==0&&v<0){
             windDirectionSpeedMap.put("wind_direction",180.0);
-            windDirectionSpeedMap.put("wind_speed",-v);
+            windDirectionSpeedMap.put("wind_speed",Math.abs(v)/list.size());
         }else if (u<0&&v<0){
-            windDirectionSpeedMap.put("wind_direction",Math.atan2(-u,-v)+180);
-            windDirectionSpeedMap.put("wind_speed",Math.sqrt(u*u+v*v));
+            windDirectionSpeedMap.put("wind_direction",Math.toDegrees(Math.atan2(-u,-v))+180);
+            windDirectionSpeedMap.put("wind_speed",Math.sqrt(u*u+v*v)/list.size());
         }else if (u<0&&v==0){
             windDirectionSpeedMap.put("wind_direction",270.0);
-            windDirectionSpeedMap.put("wind_speed",-u);
+            windDirectionSpeedMap.put("wind_speed",Math.abs(u)/list.size());
         }else if (u<0&&v>0){
-            windDirectionSpeedMap.put("wind_direction",Math.atan2(v,-u)+270);
-            windDirectionSpeedMap.put("wind_speed",Math.sqrt(u*u+v*v));
+            windDirectionSpeedMap.put("wind_direction",Math.toDegrees(Math.atan2(v,-u))+270);
+            windDirectionSpeedMap.put("wind_speed",Math.sqrt(u*u+v*v)/list.size());
         }
         return windDirectionSpeedMap;
     }
 
+    /*public static void main(String[] args) {
+        List list = new ArrayList();
+        Map map = new HashMap();
+        Map map2 = new HashMap();
+        map.put("wind_direction",45);
+        map.put("wind_speed",1);
+        map2.put("wind_direction",45);
+        map2.put("wind_speed",1);
+        list.add(map);
+        list.add(map2);
+        Map<String, Double> re = getWind_direction_speed(list);
+        System.out.println(re);
+        System.out.println(Math.toRadians(45));
+        System.out.println(Math.sin(Math.toRadians(45)));
+        System.out.println(Math.cos(Math.toRadians(45)));
+    }*/
+
 }

--
Gitblit v1.8.0