#pragma once #include #include #include #include #include "PlanimetryCalculus.h" class Circle : public QObject { Q_OBJECT public: Circle(QObject *parent = nullptr); Circle(double radius = 0, QObject *parent = nullptr); Circle(double radius = 0, QPointF origin = QPointF(0,0), QObject *parent = nullptr); Circle(const Circle &other, QObject *parent = nullptr); Circle &operator=(const Circle &other); // Property setters void setRadius(double radius); void setOrigin(const QPointF &origin); // Property getters double radius() const; QPointF origin() const; // Member methodes QVector approximate (int numberOfCorners) const; QVector approximate (double angleDiscretisation) const; QVector approximateSektor(int numberOfCorners, double alpha1, double alpha2) const; QVector approximateSektor(double angleDiscretisation, double alpha1, double alpha2) const; void toCoordinate (QPointF &toCoordinate, double alpha) const; QPointF toCoordinate (double alpha) const; bool isNull() const; signals: void radiusChanged(double radius); void originChanged(QPointF origin); private: double _circleRadius; QPointF _circleOrigin; };