#pragma once #include #include #include #include #include class Circle; namespace PlanimetryCalculus { enum IntersectType{InsideNoIntersection, InsideTouching, InsideIntersection, OutsideIntersection, OutsideTouching, OutsideNoIntersection, CirclesEqual, //Circle Circle intersection NoIntersection, Tangent, Secant, // Circle Line Intersetion EdgeCornerIntersection, EdgeEdgeIntersection, CornerCornerIntersection, LinesParallel, LinesEqual, // Line Line intersection Error // general }; void rotate(QPointF &point, double alpha); void rotate(QList &point, double alpha); void rotate(QLineF &point, double alpha); void rotate(QPolygonF &point, double alpha); void rotateDegree(QPointF &point, double alpha); void rotateDegree(QList &points, double alpha); void rotateDegree(QLineF &point, double alpha); void rotateDegree(QPolygonF &point, double alpha); IntersectType intersects(const Circle &circle1, const Circle &circle2); IntersectType intersects(const Circle &circle1, const Circle &circle2, QList &intersectionPoints); IntersectType intersects(const Circle &circle, const QLineF &line); IntersectType intersects(const Circle &circle, const QLineF &line, QList &intersectionPoints); IntersectType intersects(const QLineF &line1, const QLineF &line2, QPointF &intersectionPt); QList intersects(const QPolygonF &polygon, const QLineF &line, QList &intersectionList, QList> &neighbourList); IntersectType intersects(const QPolygonF &polygon, const QLineF &line); double distance(const QPointF &p1, const QPointF p2); double angle(const QPointF &p1, const QPointF p2); double angleDegree(const QPointF &p1, const QPointF p2); double truncateAngle(double angle); double truncateAngleDegree(double angle); }