yy1717
2023-03-31 4bd08f0355b6b2cf3c027202d5ad301b4e182953
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