From b5c6c200d60aae805614495512ab24eafcce1fb9 Mon Sep 17 00:00:00 2001
From: lizhanwei <Dana_Lee1016@126.com>
Date: 星期四, 02 四月 2020 17:53:45 +0800
Subject: [PATCH] 摆正考试地图

---
 app/src/main/java/safeluck/drive/evaluation/fragment/MapFragment.java |   75 ++++++++++++++++++++++++++++---------
 1 files changed, 56 insertions(+), 19 deletions(-)

diff --git a/app/src/main/java/safeluck/drive/evaluation/fragment/MapFragment.java b/app/src/main/java/safeluck/drive/evaluation/fragment/MapFragment.java
index 8e8137d..187d6e5 100644
--- a/app/src/main/java/safeluck/drive/evaluation/fragment/MapFragment.java
+++ b/app/src/main/java/safeluck/drive/evaluation/fragment/MapFragment.java
@@ -46,11 +46,13 @@
 import safeluck.drive.evaluation.R;
 import safeluck.drive.evaluation.bean.ExamMap;
 import safeluck.drive.evaluation.bean.ExamPlatformData;
+import safeluck.drive.evaluation.bean.Point;
 import safeluck.drive.evaluation.bean.RealTimeCarPos;
 import safeluck.drive.evaluation.cEventCenter.CEventCenter;
 import safeluck.drive.evaluation.cEventCenter.ICEventListener;
 import safeluck.drive.evaluation.util.CThreadPoolExecutor;
 import safeluck.drive.evaluation.util.FileUtil;
+import safeluck.drive.evaluation.util.Utils;
 
 
 /**
@@ -214,13 +216,10 @@
         if (canvas2 == null || bmp == null) {
             return;
         }
-//        _mActivity.runOnUiThread(new Runnable() {
-//            @Override
-//            public void run() {
                 double base_x = 300, base_y = 20;
                 double max_x = 0, min_x = 0, max_y = 0, min_y = 0;
 
-                Log.d(TAG, "DrawMap map size " + map.length + " car size " + car.length);
+                Log.d(TAG, "DrawMap map size " + map.length + " car size " + car.length+"map other length="+map_other.length);
 
                 for (int i = 0; i < map.length; i++) {
                     if (i == 0) {
@@ -264,20 +263,20 @@
 
                 Log.d(TAG, "DrawMap max_x " + max_x + " max_y " + max_y + " min_x " + min_x + " min_y " + min_y);
 
-                for (int i = 0; i < car.length; i++) {
-                    if (max_x < car[i][0]) {
-                        max_x = car[i][0];
-                    }
-                    if (min_x > car[i][0]) {
-                        min_x = car[i][0];
-                    }
-                    if (max_y < car[i][1]) {
-                        max_y = car[i][1];
-                    }
-                    if (min_y > car[i][1]) {
-                        min_y = car[i][1];
-                    }
-                }
+//                for (int i = 0; i < car.length; i++) {
+//                    if (max_x < car[i][0]) {
+//                        max_x = car[i][0];
+//                    }
+//                    if (min_x > car[i][0]) {
+//                        min_x = car[i][0];
+//                    }
+//                    if (max_y < car[i][1]) {
+//                        max_y = car[i][1];
+//                    }
+//                    if (min_y > car[i][1]) {
+//                        min_y = car[i][1];
+//                    }
+//                }
 
                 Log.d(TAG, "DrawMap max_x " + max_x + " max_y " + max_y + " min_x " + min_x + " min_y " + min_y);
 
@@ -291,6 +290,7 @@
                 }
 
                 Log.d(TAG, "DrawMap scale_x " + scale_x + " scale_y " + scale_y);
+
 
                 canvas2.drawColor(Color.WHITE);
 
@@ -752,6 +752,7 @@
                     map_id = timeCarPos.getMap_id();
 
                     List<Double> mainAnt = timeCarPos.getMain_ant();
+                    Point mainPoint = new Point(mainAnt.get(0), mainAnt.get(1));
                     List<Integer> tire1 = timeCarPos.getLeft_front_tire();
                     List<Integer> tire2 = timeCarPos.getRight_front_tire();
                     List<Integer> tire3 = timeCarPos.getLeft_rear_tire();
@@ -857,12 +858,48 @@
                                         if ((k % 2) == 0) {
                                             map[map_line][0] = xys.get(k);
                                         } else {
-                                            double value = 0 - xys.get(k);
+                                            double value = xys.get(k);
                                             Log.i(TAG, "onCEvent: map鏂板��=" + value + " 浣嶇疆锛�" + k);
                                             map[map_line][1] = value;
                                             map_line++;
                                         }
                                     }
+                                    Log.i(TAG,String.format("涓嬮潰寮�濮嬫棆杞紝map.length=%d",map.length));
+                                    Point point2 = new Point(map[0][0],map[0][1]);
+                                    double deg = 0.0;
+                                    switch (map.length){
+
+                                        case 8:
+                                            Point point1 = new Point(map[map.length-1][0],map[map.length-1][1]);
+                                            deg = Utils.YawOf(point2,point1);
+                                            deg +=270;
+                                            for (int k = 0; k < map.length; k++) {
+                                                Point point11 = new Point(map[k][0],map[k][1]);
+                                                Point point = Utils.rotatePoint(point11,point2,deg);
+                                                map[k][0] = point.getX();
+                                                map[k][1] = 0-point.getY();
+                                                Log.i(TAG,String.format("鏃嬭浆鍚庣殑鍊糾ap[%d][0]=%f,map[%d][1]=%f,deg=%f",k,map[k][0],k,map[k][1],deg));
+                                            }
+                                            break;
+                                        case 9:
+                                            break;
+                                        case 6:
+                                            break;
+                                            default:
+                                                break;
+                                    }
+                                    for (int k = 0; k < car.length; k++) {
+                                        Point oldPoint = new Point(car[k][0], car[k][1]);
+                                        Point newPoint = Utils.rotatePoint(oldPoint, point2, deg );
+                                        car[k][0] = newPoint.getX();
+                                        car[k][1] = newPoint.getY();
+
+//                                        car[k][0] = car[k][0] - point2.getX();
+//                                        car[k][1] = car[k][1] - point2.getY();
+//                                        car[k][1] = -car[k][1];
+                                        Log.i(TAG,String.format("鏃嬭浆鍚庣殑鍊糲ar[%d][0]=%f,car[%d][1]=%f,deg=%f",k,car[k][0],k,car[k][1],deg));
+                                    }
+
                                 }else{
                                     MyLog.i(TAG,"鏆傛椂鏀寔鏇茬嚎");
                                     map_other = new double[xys.size()/2][2];

--
Gitblit v1.8.0