From 46f56f26bfcc6ce26ffd8132ee11bf019eef3289 Mon Sep 17 00:00:00 2001
From: yy1717 <fctom1215@outlook.com>
Date: 星期一, 13 四月 2020 11:48:28 +0800
Subject: [PATCH] 计算边距

---
 lib/src/main/cpp/test_items/area_exam.cpp |   55 +++++++++++++++++++++++++++++++++++++++++++++++++++++++
 1 files changed, 55 insertions(+), 0 deletions(-)

diff --git a/lib/src/main/cpp/test_items/area_exam.cpp b/lib/src/main/cpp/test_items/area_exam.cpp
index e9bee0c..819910b 100644
--- a/lib/src/main/cpp/test_items/area_exam.cpp
+++ b/lib/src/main/cpp/test_items/area_exam.cpp
@@ -43,6 +43,61 @@
     ExecuteExam(CurrExamMapIndex, AreaMapList, car, CarModelList, speed, moveDirect, azimuth, rtkTime);
 }
 
+void DistanceOfTire2X(std::vector<double> &array, const car_model *car, std::vector<Line> line_set)
+{
+    double ld = 100, rd = 100;
+
+    array.clear();
+
+    for (auto line = line_set.begin(); line != line_set.end(); line++) {
+        double ld_t = 100, rd_t = 100;
+        double d;
+        if (VerticalPointOnLine(car->carXY[car->left_front_tire[TIRE_OUTSIDE]], *line)) {
+            d = DistanceOf(car->carXY[car->left_front_tire[TIRE_OUTSIDE]], *line);
+            if (d < ld_t) {
+                ld_t = d;
+            }
+        }
+        if (VerticalPointOnLine(car->carXY[car->left_rear_tire[TIRE_OUTSIDE]], *line)) {
+            d = DistanceOf(car->carXY[car->left_rear_tire[TIRE_OUTSIDE]], *line);
+            if (d < ld_t) {
+                ld_t = d;
+            }
+        }
+
+        if (VerticalPointOnLine(car->carXY[car->right_front_tire[TIRE_OUTSIDE]], *line)) {
+            d = DistanceOf(car->carXY[car->right_front_tire[TIRE_OUTSIDE]], *line);
+            if (d < rd_t) {
+                rd_t = d;
+            }
+        }
+        if (VerticalPointOnLine(car->carXY[car->right_rear_tire[TIRE_OUTSIDE]], *line)) {
+            d = DistanceOf(car->carXY[car->right_rear_tire[TIRE_OUTSIDE]], *line);
+            if (d < rd_t) {
+                rd_t = d;
+            }
+        }
+
+        if (isEqual2(ld_t, rd_t)) {
+            if (!isEqual(ld_t, 100)) {
+                if (rd_t < rd)
+                    rd = rd_t;
+                if (ld_t < ld)
+                    ld = ld_t;
+            }
+        } else if (ld_t > rd_t) {
+            if (rd_t < rd)
+                rd = rd_t;
+        } else {
+            if (ld_t < ld)
+                ld = ld_t;
+        }
+    }
+
+    array.push_back(ld);
+    array.push_back(rd);
+}
+
 static void DetectEnterOrExitMap(const car_model *car, LIST_CAR_MODEL &CarModelList, LIST_AREA_MAP &mapList)
 {
     if (CurrExamMapIndex < 0) {

--
Gitblit v1.8.0