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