From e5659a16092dc90fd7b06f3659158ddae6e1edd3 Mon Sep 17 00:00:00 2001
From: yy1717 <fctom1215@outlook.com>
Date: 星期一, 06 七月 2020 17:06:34 +0800
Subject: [PATCH] Merge remote-tracking branch 'origin/master'

---
 app/src/main/java/safeluck/drive/evaluation/util/Utils.java |   85 ++++++++++++++++++++++++++++++++++++++++++
 1 files changed, 85 insertions(+), 0 deletions(-)

diff --git a/app/src/main/java/safeluck/drive/evaluation/util/Utils.java b/app/src/main/java/safeluck/drive/evaluation/util/Utils.java
index b7e43f5..2c1ab57 100644
--- a/app/src/main/java/safeluck/drive/evaluation/util/Utils.java
+++ b/app/src/main/java/safeluck/drive/evaluation/util/Utils.java
@@ -8,6 +8,7 @@
 
 import com.anyun.exam.lib.MyLog;
 import com.anyun.exam.lib.util.ByteUtil;
+import com.google.gson.Gson;
 import com.safeluck.aykj.utils.BytesUtils;
 
 import java.io.File;
@@ -37,7 +38,11 @@
 import javax.crypto.spec.DESKeySpec;
 import javax.crypto.spec.IvParameterSpec;
 
+import safeluck.drive.evaluation.app;
+import safeluck.drive.evaluation.bean.CarModel;
+import safeluck.drive.evaluation.bean.GisCarModel;
 import safeluck.drive.evaluation.bean.Point;
+import safeluck.drive.evaluation.httpmodule.GsonConverterFactory;
 
 import static java.lang.Math.cos;
 import static java.lang.Math.pow;
@@ -656,4 +661,84 @@
         }
 
     }
+
+
+    public static List<CarModel> getCarModelData(Point basePoint, List<Integer> axial, List<Point> car){
+        List<CarModel> carModelList = new ArrayList<>();
+        double C02= (car.get(0).getX()-basePoint.getX())*(car.get(0).getX()-basePoint.getX()) + (car.get(0).getY()-basePoint.getY())*(car.get(0).getY()-basePoint.getY());
+        double c0 = Math.sqrt(C02);
+        CarModel carModel = new CarModel();
+        carModel.setDistance(c0);
+        carModel.setAngle(0.0);
+        carModelList.add(carModel);
+
+        for (int i = 1; i < car.size(); ++i) {
+            double dis2 = (car.get(i).getX()-basePoint.getX())*(car.get(i).getX()-basePoint.getX()) + (car.get(i).getY()-basePoint.getY())*(car.get(i).getY()-basePoint.getY());
+            double dis = Math.sqrt(dis2);
+
+            CarModel c =new CarModel();
+            c.setDistance(dis);
+
+            c.setAngle(180 * Math.acos((dis2 + C02 - ((car.get(i).getX()-car.get(0).getX())*(car.get(i).getX()-car.get(0).getX()) +
+                    (car.get(i).getY()-car.get(0).getY())*(car.get(i).getY()-car.get(0).getY())))/(2*c0*dis)) / Math.PI);
+
+            if (i > axial.get(1)){
+                c.setAngle( 360.0 - c.getAngle());
+            }
+            carModelList.add(c);
+        }
+        return carModelList;
+    }
+
+    public static List<Point> getCarPoint(double pitch,double yaw,Point point){
+        pitch = 0;
+//        yaw = 45;
+        Point main_ant = point;
+        List<Point> carNew = new ArrayList<>();
+        StringBuffer buffer=FileUtil.readAssetTxtFile(app.getAppContext(),"giscar.json");
+        Log.i(TAG,"giscar="+buffer.toString());
+        GisCarModel gisCarModel= new Gson().fromJson(buffer.toString(),GisCarModel.class);
+        List<Point> pointList = new ArrayList<Point>() ;
+        for (int i = 0; i < gisCarModel.getPoint().size(); i++) {
+                double x= gisCarModel.getPoint().get(i);
+                i++;
+                double y= gisCarModel.getPoint().get(i);
+                pointList.add(new Point(x,y));
+
+
+
+        }
+        double mainAnt_x = gisCarModel.getMain_ant().get(0);
+        double mainAnt_y = gisCarModel.getMain_ant().get(1);
+        List<CarModel> carModels = getCarModelData(new Point(mainAnt_x, mainAnt_y),gisCarModel.getAxial(),pointList);
+        if (carModels != null && carModels.size()>0){
+
+            for (int i = 0; i < carModels.size(); ++i) {
+                Log.i(TAG,String.format("浣嶇疆[%d],distance=%f,angle=%f",i,carModels.get(i).getDistance(),carModels.get(i).getAngle()));
+                double qrx = carModels.get(i).getDistance() * Math.sin(carModels.get(i).getAngle() * Math.PI / 180);
+                double qry = carModels.get(i).getDistance() * Math.cos(carModels.get(i).getAngle() * Math.PI / 180) * Math.cos(pitch * Math.PI / 180);
+
+                double projectDistance = Math.sqrt(Math.pow(qrx, 2) + Math.pow(qry, 2));
+                double projectAngle = Math.acos(qry / projectDistance) * 180 / Math.PI;
+
+                if (carModels.get(i).getAngle() > 180) {
+                    projectAngle = 360 - projectAngle;
+                }
+
+                double X =
+                        projectDistance * Math.sin(yaw * Math.PI / 180) * Math.cos(projectAngle * Math.PI / 180) -
+                                projectDistance * Math.cos(yaw * Math.PI / 180) * Math.sin(projectAngle * Math.PI / 180) +
+                                main_ant.getX();
+                double Y =
+                        projectDistance * Math.sin(yaw * Math.PI / 180) * Math.sin(projectAngle * Math.PI / 180) +
+                                projectDistance * Math.cos(yaw * Math.PI / 180) * Math.cos(projectAngle * Math.PI / 180) +
+                                main_ant.getY();
+                carNew.add(new Point(X,Y));
+
+            }
+        }
+        return carNew;
+
+
+    }
 }

--
Gitblit v1.8.0