From 4bd08f0355b6b2cf3c027202d5ad301b4e182953 Mon Sep 17 00:00:00 2001
From: yy1717 <fctom1215@outlook.com>
Date: 星期五, 31 三月 2023 17:16:22 +0800
Subject: [PATCH] 科目二修改

---
 lib/src/main/cpp/test_common/Geometry.h |   38 +++++++++++++++++++++++++++++---------
 1 files changed, 29 insertions(+), 9 deletions(-)

diff --git a/lib/src/main/cpp/test_common/Geometry.h b/lib/src/main/cpp/test_common/Geometry.h
index 276fccd..08947b9 100644
--- a/lib/src/main/cpp/test_common/Geometry.h
+++ b/lib/src/main/cpp/test_common/Geometry.h
@@ -9,13 +9,13 @@
 #include <initializer_list>
 #include <vector>
 
-enum Relation
+typedef enum
 {
     GM_None,
     GM_Tangent,
     GM_Intersection,
     GM_Containment
-};
+} relation_t;
 
 typedef struct PointF_ {
     double X;
@@ -34,6 +34,13 @@
     PointF *point;
 } Polygon;
 
+typedef struct Circle_ {
+    PointF centre;
+    double radius;
+} Circle;
+
+#define MAKE_LINE(a, b, c)    { (a).X1=b.X; (a).Y1=b.Y; (a).X2=c.X; (a).Y2=c.Y; }
+
  double toRadians(double degree);
  double toDegree(double radians);
  bool isEqual(double a, double b);
@@ -44,14 +51,17 @@
 void CleanPolygon(Polygon *polygon);
 void MakeHidePoint(PointF *point, const PointF *bp, const Line *bl);
 
-Relation IntersectionOf(const Polygon *polygon1, const Polygon *polygon2);
-Relation IntersectionOf(Line line, const Polygon *polygon);
-Relation IntersectionOf(PointF point, const Polygon *polygon);
-Relation IntersectionOf(PointF point, Line line);
-Relation IntersectionOf(Line line1, Line line2);
+relation_t IntersectionOf(const Polygon *polygon1, const Polygon *polygon2);
+relation_t IntersectionOf(Line line, const Polygon *polygon);
+relation_t IntersectionOf(PointF point, const Polygon *polygon);
+relation_t IntersectionOf(PointF point, Line line);
+relation_t IntersectionOf(Line line1, Line line2);
 double DistanceOf(PointF point1, PointF point2);
 double DistanceOf(PointF point, Line line);
 double YawOf(PointF p1, PointF p2);
+double YawOf(Line &line);
+double AngleOf(PointF p1, PointF p2, PointF p3);
+double AngleOfTowLine(Line base, Line dest);
 double DeltaYaw(double yaw1, double yaw2);
 double CalculateAngle(Line base, Line dest);
 PointF rotatePoint(PointF oldPoint, PointF centre, double degree);
@@ -59,8 +69,17 @@
 bool InsidePolygon(const Polygon *t1, const Polygon *t2);
 bool PartInsidePolygon(const Polygon *t1, const Polygon *t2);
 bool OutsidePolygon(const Polygon *t1, const Polygon *t2);
-int IntersectionOfLine(PointF p1, PointF p2, PointF p3);
-int IntersectionOfLine(PointF p, Line line);
+
+typedef enum {
+    REL_POS_ON,
+    REL_POS_LEFT,
+    REL_POS_RIGHT,
+    REL_POS_FRONT,
+    REL_POS_REAR
+} relational_position_t;
+
+relational_position_t IntersectionOfLine(PointF p1, PointF p2, PointF p3);
+relational_position_t IntersectionOfLine(PointF p, Line line);
 PointF GetVerticalPoint(PointF p1, PointF p2, PointF p3);
 bool VerticalPointOnLine(PointF point, Line line);
 bool VerticalPointOnLine(PointF point, Line line, PointF &vp);
@@ -68,5 +87,6 @@
 PointF PointExtend(PointF ori, double length, double yaw);
 bool IsSamePoint(PointF p1, PointF p2);
 double AvgYaw(std::vector<double> &angles);
+bool Calc3PointCircle(PointF p1, PointF p2, PointF p3, Circle &circle);
 
 #endif //GUI_GEOMETRY_H

--
Gitblit v1.8.0