#define _USE_MATH_DEFINES #include #include "varc.h" #include VArc::VArc () : f1(0), formulaF1(QString()), f2(0), formulaF2(QString()), radius(0), formulaRadius(QString()), center(0), points(0){ } VArc::VArc (const QMap *points, qint64 center, qreal radius, QString formulaRadius, qreal f1, QString formulaF1, qreal f2, QString formulaF2 ) : f1(f1), formulaF1(formulaF1), f2(f2), formulaF2(formulaF2), radius(radius), formulaRadius(formulaRadius), center(center), points(points){ } VArc::VArc(const VArc &arc): f1(0), formulaF1(QString()), f2(0), formulaF2(QString()), radius(0), formulaRadius(QString()), center(0), points(0){ this->points = arc.GetDataPoints(); this->f1 = arc.GetF1(); this->formulaF1 = arc.GetFormulaF1(); this->f2 = arc.GetF2(); this->formulaF2 = arc.GetFormulaF2(); this->radius = arc.GetRadius(); this->formulaRadius = arc.GetFormulaRadius(); this->center = arc.GetCenter(); } const VArc &VArc::operator =(const VArc &arc){ this->points = arc.GetDataPoints(); this->f1 = arc.GetF1(); this->formulaF1 = arc.GetFormulaF1(); this->f2 = arc.GetF2(); this->formulaF2 = arc.GetFormulaF2(); this->radius = arc.GetRadius(); this->formulaRadius = arc.GetFormulaRadius(); this->center = arc.GetCenter(); return *this; } qreal VArc::GetF1() const{ return f1; } QString VArc::GetFormulaF1() const{ return formulaF1; } qreal VArc::GetF2() const{ return f2; } QString VArc::GetFormulaF2() const{ return formulaF2; } qreal VArc::GetLength () const{ return M_PI * radius/180 * (f2-f1); } qreal VArc::GetRadius() const{ return radius; } QString VArc::GetFormulaRadius() const{ return formulaRadius; } qint64 VArc::GetCenter() const{ return center; } QPointF VArc::GetCenterPoint() const{ if(points->contains(center)){ return points->value(center).toQPointF(); } else { qCritical()<<"Не можу знайти id = "< *VArc::GetDataPoints() const{ return points; } QPainterPath VArc::GetPath() const{ QPainterPath Path; QPointF center = GetCenterPoint(); QRectF rect(center.x()-radius, center.y()-radius, radius*2, radius*2); Path.moveTo(GetP1()); qreal angle = QLineF(center, GetP1()).angleTo(QLineF(center, GetP2())); Path.arcTo(rect, GetF1(), angle); return Path; }