From 42cc040a7acbefb93b973796a927f90a7126e438 Mon Sep 17 00:00:00 2001
From: Admin <Dana_Lee1016@126.com>
Date: 星期一, 22 二月 2021 13:37:30 +0800
Subject: [PATCH] Merge remote-tracking branch 'origin/master'

---
 lib/src/main/cpp/test_items/area_exam.cpp |   40 ++++++++++++++++++++++++++++++++++++++--
 1 files changed, 38 insertions(+), 2 deletions(-)

diff --git a/lib/src/main/cpp/test_items/area_exam.cpp b/lib/src/main/cpp/test_items/area_exam.cpp
index 9eaded6..f4dcce9 100644
--- a/lib/src/main/cpp/test_items/area_exam.cpp
+++ b/lib/src/main/cpp/test_items/area_exam.cpp
@@ -201,6 +201,8 @@
 
 static int EnterMap(const car_model *car, LIST_CAR_MODEL &CarModelList, LIST_AREA_MAP &mapList)
 {
+    vector<int> score(mapList.size(), 0);       // 鍦哄湴閲嶅悎鏃讹紝杞﹀ご灏鹃兘鍦ㄥ唴鐨勪紭鍏�
+
     for (int i = 0; i < mapList.size() && car != NULL; ++i) {
         // 杞﹀墠杞垨鍚庤疆杞ㄨ抗瓒婅繃瑙﹀彂绾�
         if (mapList[i].type == MAP_TYPE_STOP_START) {
@@ -233,7 +235,18 @@
 
                 if (DistanceOf(car->carXY[car->axial[AXIAL_FRONT]], enterLine1) > 0.1 &&
                     DistanceOf(car->carXY[car->axial[AXIAL_FRONT]], enterLine2) > 0.1)
-                    return i;
+                    score[i]++;
+            }
+            // 杞﹀熬椤剁偣鍦ㄥ満鍦板唴
+            if (IntersectionOf(car->carXY[ car->axial[AXIAL_REAR] ], &mapList[i].map) == GM_Containment) {
+                Line enterLine1, enterLine2;
+
+                MakeLine(&enterLine1, &(mapList[i].map.point[0]), &(mapList[i].map.point[1]));
+                MakeLine(&enterLine2, &(mapList[i].map.point[6]), &(mapList[i].map.point[7]));
+
+                if (DistanceOf(car->carXY[car->axial[AXIAL_REAR]], enterLine1) > 0.1 &&
+                    DistanceOf(car->carXY[car->axial[AXIAL_REAR]], enterLine2) > 0.1)
+                    score[i]++;
             }
         }
         if (mapList[i].type == MAP_TYPE_PART_EDGE) {
@@ -244,7 +257,16 @@
                 MakeLine(&enterLine, &(mapList[i].map.point[0]), &(mapList[i].map.point[1]));
 
                 if (DistanceOf(car->carXY[car->axial[AXIAL_FRONT]], enterLine) > 0.1)
-                    return i;
+                    score[i]++;
+            }
+            // 杞﹀熬椤剁偣鍦ㄥ満鍦板唴
+            if (IntersectionOf(car->carXY[ car->axial[AXIAL_REAR] ], &mapList[i].map) == GM_Containment) {
+                Line enterLine;
+
+                MakeLine(&enterLine, &(mapList[i].map.point[0]), &(mapList[i].map.point[1]));
+
+                if (DistanceOf(car->carXY[car->axial[AXIAL_REAR]], enterLine) > 0.1)
+                    score[i]++;
             }
         }
         if (mapList[i].type == MAP_TYPE_TURN_90) {
@@ -257,6 +279,7 @@
                 return i;
         }
         if (mapList[i].type == MAP_TYPE_CURVE) {
+            // 杞﹀墠杞垨鍚庤疆杞ㄨ抗瓒婅繃瑙﹀彂绾�
             Line triggerLine;
 
             MakeLine(&triggerLine, &mapList[i].map2.point[0], &mapList[i].map.point[0]);
@@ -264,6 +287,19 @@
                 return i;
         }
     }
+
+    for (int i = 0; i < score.size(); ++i) {
+        if (score[i] == 2) {
+            return i;
+        }
+    }
+
+    for (int i = 0; i < score.size(); ++i) {
+        if (score[i] == 1) {
+            return i;
+        }
+    }
+
     return -1;
 }
 

--
Gitblit v1.8.0