| | |
| | | #include <initializer_list> |
| | | #include <vector> |
| | | |
| | | enum Relation |
| | | typedef enum |
| | | { |
| | | GM_None, |
| | | GM_Tangent, |
| | | GM_Intersection, |
| | | GM_Containment |
| | | }; |
| | | } relation_t; |
| | | |
| | | typedef struct PointF_ { |
| | | double X; |
| | |
| | | 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); |
| | |
| | | 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); |
| | |
| | | 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); |
| | |
| | | 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 |