From a073dc3c983b4c56c5da92642c9ad11995bdb844 Mon Sep 17 00:00:00 2001
From: yy1717 <fctom1215@outlook.com>
Date: 星期一, 11 五月 2020 18:05:31 +0800
Subject: [PATCH] 新的科目三

---
 lib/src/main/cpp/driver_test.h |   70 ++++++++++++++++++++++++-----------
 1 files changed, 48 insertions(+), 22 deletions(-)

diff --git a/lib/src/main/cpp/driver_test.h b/lib/src/main/cpp/driver_test.h
index 7d3d221..46a6abc 100644
--- a/lib/src/main/cpp/driver_test.h
+++ b/lib/src/main/cpp/driver_test.h
@@ -92,12 +92,14 @@
     int wrong_id;
 };
 
-struct trigger_line_t {
+
+struct trigger_line_tx {
     int triggerMapId;
     Polygon line;
 };
 
-struct road_exam_map {
+
+struct road_exam_mapx {
     int id;
     int type;
 
@@ -113,7 +115,7 @@
     Polygon *redArea;
 
     int triggerLineNum;
-    trigger_line_t *triggerLine;
+    trigger_line_tx *triggerLine;
 
     int roadEdgeLineNum;    // 閬撹矾杈圭嚎锛屽彧鏈夌洿绾块┚椹躲�侀潬杈瑰仠杞︽墠鏈�
     Polygon *roadEdgeLine;
@@ -123,10 +125,23 @@
     int flagStop;           // 鍒拌揪寮�濮嬬嚎鍓嶏紝鏄惁闇�瑕佸仠杞�
 };
 
-typedef vector<struct road_exam_map> LIST_ROAD_MAP;
+typedef vector<struct road_exam_mapx> LIST_ROAD_MAP;
 
-#define ROAD_DOTTED_LINE            0
-#define ROAD_SOLID_LINE             1
+#define LINE_DOTTED            0
+#define LINE_SOLID             1
+#define LINE_HALF_SOLID_LEFT        2
+#define LINE_HALF_SOLID_RIGHT       3
+
+//杞﹂亾鏂瑰悜锛堟寜浣嶇粍鍚堬級,濡傛灉涓�0锛屽垯琛ㄦ棤杞﹂亾鏂瑰悜璇存槑锛�
+#define LANE_FORWARD	0x01
+#define LANE_LEFT		0x02
+#define LANE_RIGHT		0x04
+#define LANE_BACKWARD	0x08
+
+#define ZEBRA_CROSSING              0
+#define SCHOOL_AREA                 1
+#define BUS_STATION_AREA            2
+#define GRID_AREA                   3
 
 typedef struct {
     int character;                  // 灞炴�э紙瀹炵嚎銆佽櫄绾匡紝鏈変簺鍙互鎺夊ご鐨勮矾娈碉級
@@ -134,42 +149,51 @@
 } edge_t;
 
 typedef struct {
-    int character;          // 灞炴�с�婂疄绾裤�佽櫄绾裤��
-    std::vector<Polygon> lines;      // 姣忎竴鏉$嚎
+    int character;          // 灞炴�с�婂疄绾裤�佽櫄绾裤�佸崐瀹炲崐铏氱嚎銆�
+    int left_lane_direct;
+    int right_lane_direct;
+    std::vector<PointF> points;
+} segment_t;
+
+// 涓�缁勫钩琛岀殑鍒嗛亾绾�
+typedef struct {
+    std::vector<std::vector<segment_t>> lines;      // 姣忔鍩熶笅鐨勫钩琛岀殑涓�缁勭嚎
 } separate_t;
 
-struct road_t {
+typedef struct {
     int id;
     Line startLine;
     Line stopLine;
     int active;         // 鍒拌揪璺彛灏鹃儴鐨勮杩涙柟鍚�
+    int targetRoad;
+    int stopFlag;
     string tts;
-    Polygon area;
+    Polygon area;       // 鏁翠釜閬撹矾鍖哄煙
     std::vector<edge_t> leftEdge;
     std::vector<edge_t> rightEdge;
     std::vector<separate_t> separate;
-};
+} road_t;
 
-struct special_area_t {
+typedef struct {
     int id;
     int road;
-    int character;
-    Line startLine;
-    Polygon area;
-};
+    int type;
+    std::vector<PointF> area;       // 浜鸿閬撶瓑鍙充晶2鐐癸紝缃戞牸绾�4鐐�
+    std::vector<PointF> leftPoints; // 瀵瑰簲鍒伴亾璺乏渚х殑鐐�
+} special_area_t;
 
-struct trigger2_line_t {
+typedef struct {
     int id;
     int road;
     int active;
     string tts;
     Line line;
-};
+} trigger_line_t;
 
-struct road_exam2_map {
-    std::vector<struct road_t> roads;
-    std::vector<struct special_area_t> specialAreas;
-    std::vector<struct trigger2_line_t> triggerLines;
+struct road_exam_map {
+    std::vector<road_t> roads;
+    std::vector<special_area_t> specialAreas;
+    std::vector<trigger_line_t> triggerLines;
 };
 
 struct area_exam_map {
@@ -193,6 +217,8 @@
 
 
 void CleanRoadMap(void);
+void SetRoadMap(road_exam_map &map);
+
 void SetRoadMapPoints(vector<double> &mapPoints);
 void AddRoadMapParent(int id, int type, string tts, int stopFlag, vector<vector<int>> &redLines,
                       vector<vector<int>> &redAreas, vector<vector<int>> &greenLines,

--
Gitblit v1.8.0