From d9dc7419b35b7762bc5222cf874ccc39d2d66f43 Mon Sep 17 00:00:00 2001 From: yy1717 <fctom1215@outlook.com> Date: 星期一, 10 八月 2020 18:36:31 +0800 Subject: [PATCH] 坐标 --- lib/src/main/cpp/test_items2/road_exam.cpp | 95 +++++++++++++++++++++++++++++++++++++++++++---- 1 files changed, 87 insertions(+), 8 deletions(-) diff --git a/lib/src/main/cpp/test_items2/road_exam.cpp b/lib/src/main/cpp/test_items2/road_exam.cpp index 3a1a5b0..8e42c1e 100644 --- a/lib/src/main/cpp/test_items2/road_exam.cpp +++ b/lib/src/main/cpp/test_items2/road_exam.cpp @@ -1379,11 +1379,11 @@ ArrivedRoadEnd(RoadMap.roads[currExamMapIndex], car, CarModelList); - if (CrashTheLine(RoadMap.roads[currExamMapIndex].stopLine, car, CarModelList)) { - DEBUG("涓嬩竴涓洰鏍囪矾 id = %d", RoadMap.roads[currExamMapIndex].targetRoad); - nextRoadId = RoadMap.roads[currExamMapIndex].targetRoad; - checkTurn = true; - } +// if (CrashTheLine(RoadMap.roads[currExamMapIndex].stopLine, car, CarModelList)) { +// DEBUG("涓嬩竴涓洰鏍囪矾 id = %d", RoadMap.roads[currExamMapIndex].targetRoad); +// nextRoadId = RoadMap.roads[currExamMapIndex].targetRoad; +// checkTurn = true; +// } if (checkTurn) { // 妫�鏌ユ槸鍚︽寔缁浆鍚� @@ -1988,7 +1988,7 @@ * @param car * @param CarModelList */ -static void ArrivedRoadEnd(road_t &road, const car_model *car, LIST_CAR_MODEL &CarModelList) +/*static void ArrivedRoadEnd(road_t &road, const car_model *car, LIST_CAR_MODEL &CarModelList) { // 璁$畻杞﹀墠杩涜建杩瑰欢闀跨嚎 double yaw = YawOf(car->carXY[ car->axial[AXIAL_FRONT] ], car->carXY[ car->axial[AXIAL_REAR] ]); @@ -2009,6 +2009,84 @@ } } else if (road.arrivedTail) { road.arrivedTail = false; + } +}*/ + +// 璺彛锛屾彁绀猴紝鍓�30绫宠繘鍏ワ紝 绂诲紑 +// 浜鸿閬擄紝杞︾珯锛屽墠30绫宠繘鍏ワ紝绂诲紑 +// 瀛︽牎锛岃繘鍏ワ紝绂诲紑 + +map<int, int> CrossingStatus; + +static void ChangeCrossingStatus(int roadIndex, int index, int status) +{ + int key = roadIndex * 100 + index; + + auto it = CrossingStatus.find(key); + + if (it != CrossingStatus.end()) { + CrossingStatus.erase(it); + } + CrossingStatus.insert(pair<int, int>(key, status)); +} + +static int GetCrossingStatus(int roadIndex, int index) +{ + int key = roadIndex * 100 + index; + + auto it = CrossingStatus.find(key); + + if (it != CrossingStatus.end()) { + return it->second; + } + return -1; +} + +enum { + CROSSING_STATUS_INVALID = -1, + CROSSING_STATUS_GUIDE, + CROSSING_STATUS_REDUCE_SPEED, + CROSSING_STATUS_BREAK_CAR, + CROSSING_STATUS_STOP_CAR +}; + +static void CheckCrossing(int roadIndex, road_t &road, const car_model *car, LIST_CAR_MODEL &CarModelList) +{ + for (int i = 0; i < road.stopLine.size(); ++i) { + if (CrashTheLine(road.stopLine[i].line, car, CarModelList)) { + if (road.stopLine[i].stopFlag) { + if (GetCrossingStatus(roadIndex, i) != CROSSING_STATUS_STOP_CAR) { + + } + } else { + if (GetCrossingStatus(roadIndex, i) != CROSSING_STATUS_BREAK_CAR) { + + } + } + ChangeCrossingStatus(roadIndex, i, CROSSING_STATUS_INVALID); + } else { + + } + PointF point; + double distance; + + point.X = road.stopLine[i].line.X1; + point.Y = road.stopLine[i].line.Y1; + + distance = CalcDistanceReference(car->carXY[car->axial[AXIAL_FRONT]], point, road.rightEdge); + + if (distance > 10 && distance < 50) { + if (GetCrossingStatus(roadIndex, i) == CROSSING_STATUS_INVALID) { + if (!road.stopLine[i].tts.empty()) { + PlayTTS(road.stopLine[i].tts.c_str()); + } + ChangeCrossingStatus(roadIndex, i, CROSSING_STATUS_GUIDE); + } + } else if (distance > 0 && distance < 30) { + if (GetCrossingStatus(roadIndex, i) != 1) { + ChangeCrossingStatus(roadIndex, i, 1); + } + } } } @@ -2084,7 +2162,7 @@ MakeLine(&extLine, &car->carXY[ car->axial[AXIAL_FRONT] ], &extPoint); // 璺彛鍒硅溅鐐� - for (int i = 0; i < map.roads.size(); ++i) { +/* for (int i = 0; i < map.roads.size(); ++i) { // 杞﹀ご鍜岃矾鍙h窛绂讳笉瓒�30绫� if (IntersectionOf(extLine, map.roads[i].stopLine) == GM_Intersection && IntersectionOfLine(car->carXY[ car->axial[AXIAL_FRONT] ], map.roads[i].stopLine) == 1 ) { @@ -2122,7 +2200,8 @@ } } } - } + }*/ + // 浜鸿閬撱�佸叕浜ょ珯鍒硅溅鐐癸紱瀛︽牎闄愰�熷尯 // DEBUG("琛ュ叏鐗规畩鍖哄煙 size = %d", map.specialAreas.size()); for (int i = 0; i < map.specialAreas.size(); i++) { -- Gitblit v1.8.0