From 5d6bac072277e62113bedbe6ab608ea88866cd3c Mon Sep 17 00:00:00 2001
From: yy1717 <fctom1215@outlook.com>
Date: 星期二, 13 四月 2021 10:57:38 +0800
Subject: [PATCH] 显示多条科目二曲线

---
 app/src/main/java/safeluck/drive/evaluation/fragment/MapFragment.java |   61 +++++++++++++++++++-----------
 1 files changed, 39 insertions(+), 22 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 418a00c..f15283e 100644
--- a/app/src/main/java/safeluck/drive/evaluation/fragment/MapFragment.java
+++ b/app/src/main/java/safeluck/drive/evaluation/fragment/MapFragment.java
@@ -488,7 +488,7 @@
     }
 
 
-    public void DrawMapAll(double yaw, List<Double> mainAnt, double[][][] map, double [][]map_other, double[][] car,
+    public void DrawMapAll(double yaw, List<Double> mainAnt, double[][][] map, double [][][]map_other, double[][] car,
                            List<Integer>body, List<Integer> tire) {
         if (canvas2 == null || bmp == null || bmp2 == null || canvas3 == null) {
             return;
@@ -533,17 +533,23 @@
             car[i][1] = -car[i][1];
         }
 
-        for (int i = 0; i < map_other.length; i++) {
-            PointF oldPoint = new PointF(map_other[i][0], map_other[i][1]);
-            PointF newPoint = rotatePoint(oldPoint, mainPoint, yaw );
-            map_other[i][0] = newPoint.getX();
-            map_other[i][1] = newPoint.getY();
+        for (int x = 0; x < map_other.length; x++) {
+            if (map_other[x] == null || map_other[x].length == 0) {
+                continue;
+            }
+            Log.d(TAG, "棰勭粯鍒舵洸绾� " + x + " 鐐规暟 "+ map_other[x].length);
 
-            map_other[i][0] = map_other[i][0] - mainPoint.getX();
-            map_other[i][1] = map_other[i][1] - mainPoint.getY();
-            map_other[i][1] = -map_other[i][1];
+            for (int i = 0; map_other[x] != null && i < map_other[x].length; i++) {
+                PointF oldPoint = new PointF(map_other[x][i][0], map_other[x][i][1]);
+                PointF newPoint = rotatePoint(oldPoint, mainPoint, yaw);
+                map_other[x][i][0] = newPoint.getX();
+                map_other[x][i][1] = newPoint.getY();
+
+                map_other[x][i][0] = map_other[x][i][0] - mainPoint.getX();
+                map_other[x][i][1] = map_other[x][i][1] - mainPoint.getY();
+                map_other[x][i][1] = -map_other[x][i][1];
+            }
         }
-
         scale_x = Math.round(Math.abs(pixels / Math.sqrt(Math.pow(car[0][0], 2) + Math.pow(car[0][1], 2)) ));
         scale_y = scale_x;
 
@@ -689,10 +695,10 @@
                     path.lineTo((float) (base_x + (map[k][i][0] - min_x) * scale_x), (float) (base_y + (map[k][i][1] - min_y) * scale_y));
                 }
 
-                if (map_other.length>9){
-                    path.moveTo((float) (base_x + (map_other[0][0] - min_x) * scale_x), (float) (base_y + (map_other[0][1] - min_y) * scale_y));
-                    for (int i = 1; i < map_other.length; i++) {
-                        path.lineTo((float) (base_x + (map_other[i][0] - min_x) * scale_x), (float) (base_y + (map_other[i][1] - min_y) * scale_y));
+                if (map_other[k].length>9){
+                    path.moveTo((float) (base_x + (map_other[k][0][0] - min_x) * scale_x), (float) (base_y + (map_other[k][0][1] - min_y) * scale_y));
+                    for (int i = 1; i < map_other[k].length; i++) {
+                        path.lineTo((float) (base_x + (map_other[k][i][0] - min_x) * scale_x), (float) (base_y + (map_other[k][i][1] - min_y) * scale_y));
                     }
                 }
             }
@@ -1266,7 +1272,11 @@
                     }
                     map_id = -1;
                     if (map_id == -1){
+                        double allOtherMap[][][];
+
                         allMap =new double[examMaps.getItems().size()][][];
+                        allOtherMap = new double[examMaps.getItems().size()][][];
+
                         for (int i = 0; i < examMaps.getItems().size(); i++) {
                             ExamMap.ItemsBean examMap = examMaps.getItems().get(i);
 
@@ -1274,6 +1284,9 @@
 
                             for(int j=0; j<pointBeanList.size();j++){
                                 List<Double> xys = pointBeanList.get(j).getXy();
+
+                                Log.d(TAG, String.format("123 j = %d size = %d", j, xys.size()));
+
                                 if(j==0){
                                     map = new double[xys.size()/2][2];
                                     allMap[sanwei] = new double[xys.size()/2][2];
@@ -1288,11 +1301,12 @@
                                         }
                                     }
                                     allMap[sanwei] = map.clone();
-                                    sanwei++;
-
                                 }else{
-//                                MyLog.i(TAG,"all鏀寔鏇茬嚎");
+                                MyLog.i(TAG,String.format("鏇茬嚎 %d, 鐐规暟 %d", sanwei, xys.size()/2));
                                     map_other = new double[xys.size()/2][2];
+                                    allOtherMap[sanwei] = new double[xys.size()/2][2];
+
+                                    map_line_other = 0;
                                     for (int k=0; k<xys.size();k++){
                                         if ((k % 2) == 0) {
                                             map_other[map_line_other][0] = xys.get(k);
@@ -1302,20 +1316,20 @@
                                             map_line_other++;
                                         }
                                     }
+
+                                    allOtherMap[sanwei] = map_other.clone();
                                 }
 
-
-
                             }
-
-
+                            sanwei++;
                         }
 
                         double [][]mapOther;
 
                         mapOther = map_other.clone();
 
-                        DrawMapAll(yaw, mainAnt,allMap, mapOther, car,body,tire);
+//                        DrawMapAll(yaw, mainAnt,allMap, mapOther, car,body,tire);
+                        DrawMapAll(yaw, mainAnt,allMap, allOtherMap, car,body,tire);
                     }else{
                         for (int i = 0; i < examMaps.getItems().size(); i++) {
                             ExamMap.ItemsBean examMap = examMaps.getItems().get(i);
@@ -1324,6 +1338,9 @@
 
                                 for(int j=0; j<pointBeanList.size();j++){
                                     List<Double> xys = pointBeanList.get(j).getXy();
+
+                                    Log.d(TAG, String.format("j = %d size = %d", j, xys.size()));
+
                                     if(j==0){
                                         map = new double[xys.size()/2][2];
 

--
Gitblit v1.8.0