Also show pieces of arc after cutting.
--HG-- branch : develop
This commit is contained in:
parent
62f573ec55
commit
2e5d7cdb38
|
@ -46,17 +46,6 @@ protected:
|
||||||
void DrawLine(QGraphicsLineItem *lineItem, const QLineF &line, const QColor &color,
|
void DrawLine(QGraphicsLineItem *lineItem, const QLineF &line, const QColor &color,
|
||||||
Qt::PenStyle style = Qt::SolidLine);
|
Qt::PenStyle style = Qt::SolidLine);
|
||||||
QLineF Line(const QPointF &p1, const qreal& length, const qreal &angle);
|
QLineF Line(const QPointF &p1, const qreal& length, const qreal &angle);
|
||||||
|
|
||||||
template <class Item>
|
|
||||||
Item *InitItem(const QColor &color)
|
|
||||||
{
|
|
||||||
Item *item = new Item(this);
|
|
||||||
item->setPen(QPen(color, qApp->toPixel(qApp->widthHairLine())/factor));
|
|
||||||
item->setZValue(1);
|
|
||||||
item->setFlags(QGraphicsItem::ItemStacksBehindParent);
|
|
||||||
return item;
|
|
||||||
}
|
|
||||||
|
|
||||||
qreal CorrectAngle(const qreal &angle) const;
|
qreal CorrectAngle(const qreal &angle) const;
|
||||||
QPointF Ray(const QPointF &firstPoint, const qreal &angle) const;
|
QPointF Ray(const QPointF &firstPoint, const qreal &angle) const;
|
||||||
QPointF Ray(const QPointF &firstPoint) const;
|
QPointF Ray(const QPointF &firstPoint) const;
|
||||||
|
|
|
@ -39,7 +39,7 @@ VisToolAlongLine::VisToolAlongLine(const VContainer *data, QGraphicsItem *parent
|
||||||
|
|
||||||
lineP1 = InitPoint(supportColor, this);
|
lineP1 = InitPoint(supportColor, this);
|
||||||
lineP2 = InitPoint(supportColor, this);
|
lineP2 = InitPoint(supportColor, this);
|
||||||
line = InitItem<QGraphicsLineItem>(supportColor);
|
line = InitItem<QGraphicsLineItem>(supportColor, this);
|
||||||
point = InitPoint(mainColor, this);
|
point = InitPoint(mainColor, this);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
@ -38,10 +38,10 @@ VisToolBisector::VisToolBisector(const VContainer *data, QGraphicsItem *parent)
|
||||||
{
|
{
|
||||||
line1P1 = InitPoint(supportColor, this);
|
line1P1 = InitPoint(supportColor, this);
|
||||||
line1P2 = InitPoint(supportColor, this);
|
line1P2 = InitPoint(supportColor, this);
|
||||||
line1 = InitItem<QGraphicsLineItem>(supportColor);
|
line1 = InitItem<QGraphicsLineItem>(supportColor, this);
|
||||||
|
|
||||||
line2P2 = InitPoint(supportColor, this);
|
line2P2 = InitPoint(supportColor, this);
|
||||||
line2 = InitItem<QGraphicsLineItem>(supportColor);
|
line2 = InitItem<QGraphicsLineItem>(supportColor, this);
|
||||||
|
|
||||||
point = InitPoint(mainColor, this);
|
point = InitPoint(mainColor, this);
|
||||||
}
|
}
|
||||||
|
|
|
@ -32,8 +32,13 @@
|
||||||
|
|
||||||
//---------------------------------------------------------------------------------------------------------------------
|
//---------------------------------------------------------------------------------------------------------------------
|
||||||
VisToolCutArc::VisToolCutArc(const VContainer *data, QGraphicsItem *parent)
|
VisToolCutArc::VisToolCutArc(const VContainer *data, QGraphicsItem *parent)
|
||||||
:VisPath(data, parent), point(nullptr), length(0)
|
:VisPath(data, parent), point(nullptr), arc1(nullptr), arc2(nullptr), length(0)
|
||||||
{
|
{
|
||||||
|
arc1 = InitItem<QGraphicsPathItem>(Qt::darkGreen, this);
|
||||||
|
arc1->setFlag(QGraphicsItem::ItemStacksBehindParent, false);
|
||||||
|
arc2 = InitItem<QGraphicsPathItem>(Qt::darkRed, this);
|
||||||
|
arc2->setFlag(QGraphicsItem::ItemStacksBehindParent, false);
|
||||||
|
|
||||||
point = InitPoint(mainColor, this);
|
point = InitPoint(mainColor, this);
|
||||||
point->setZValue(2);
|
point->setZValue(2);
|
||||||
point->setFlag(QGraphicsItem::ItemStacksBehindParent, false);
|
point->setFlag(QGraphicsItem::ItemStacksBehindParent, false);
|
||||||
|
@ -53,7 +58,13 @@ void VisToolCutArc::RefreshGeometry()
|
||||||
|
|
||||||
if (qFuzzyCompare(1 + length, 1 + 0) == false)
|
if (qFuzzyCompare(1 + length, 1 + 0) == false)
|
||||||
{
|
{
|
||||||
DrawPoint(point, arc->CutArc(length), mainColor);
|
VArc ar1;
|
||||||
|
VArc ar2;
|
||||||
|
QPointF p = arc->CutArc(length, ar1, ar2);
|
||||||
|
DrawPoint(point, p, mainColor);
|
||||||
|
|
||||||
|
DrawPath(arc1, ar1.GetPath(), Qt::darkGreen);
|
||||||
|
DrawPath(arc2, ar2.GetPath(), Qt::darkRed);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
|
@ -43,6 +43,8 @@ public:
|
||||||
protected:
|
protected:
|
||||||
Q_DISABLE_COPY(VisToolCutArc)
|
Q_DISABLE_COPY(VisToolCutArc)
|
||||||
QGraphicsEllipseItem *point;
|
QGraphicsEllipseItem *point;
|
||||||
|
QGraphicsPathItem *arc1;
|
||||||
|
QGraphicsPathItem *arc2;
|
||||||
qreal length;
|
qreal length;
|
||||||
};
|
};
|
||||||
|
|
||||||
|
|
|
@ -38,8 +38,8 @@ VisToolHeight::VisToolHeight(const VContainer *data, QGraphicsItem *parent)
|
||||||
base_point = InitPoint(supportColor, this);
|
base_point = InitPoint(supportColor, this);
|
||||||
lineP1 = InitPoint(supportColor, this);
|
lineP1 = InitPoint(supportColor, this);
|
||||||
lineP2 = InitPoint(supportColor, this);
|
lineP2 = InitPoint(supportColor, this);
|
||||||
line = InitItem<QGraphicsLineItem>(supportColor);
|
line = InitItem<QGraphicsLineItem>(supportColor, this);
|
||||||
line_intersection = InitItem<QGraphicsLineItem>(supportColor);
|
line_intersection = InitItem<QGraphicsLineItem>(supportColor, this);
|
||||||
|
|
||||||
point = InitPoint(mainColor, this);
|
point = InitPoint(mainColor, this);
|
||||||
}
|
}
|
||||||
|
|
|
@ -37,7 +37,7 @@ VisToolLineIntersect::VisToolLineIntersect(const VContainer *data, QGraphicsItem
|
||||||
{
|
{
|
||||||
line1P1 = InitPoint(supportColor, this);
|
line1P1 = InitPoint(supportColor, this);
|
||||||
line1P2 = InitPoint(supportColor, this);
|
line1P2 = InitPoint(supportColor, this);
|
||||||
line1 = InitItem<QGraphicsLineItem>(supportColor);
|
line1 = InitItem<QGraphicsLineItem>(supportColor, this);
|
||||||
|
|
||||||
line2P1 = InitPoint(supportColor, this);
|
line2P1 = InitPoint(supportColor, this);
|
||||||
line2P2 = InitPoint(supportColor, this);
|
line2P2 = InitPoint(supportColor, this);
|
||||||
|
|
|
@ -39,7 +39,7 @@ VisToolNormal::VisToolNormal(const VContainer *data, QGraphicsItem *parent)
|
||||||
|
|
||||||
lineP1 = InitPoint(supportColor, this);
|
lineP1 = InitPoint(supportColor, this);
|
||||||
lineP2 = InitPoint(supportColor, this);
|
lineP2 = InitPoint(supportColor, this);
|
||||||
line = InitItem<QGraphicsLineItem>(supportColor);
|
line = InitItem<QGraphicsLineItem>(supportColor, this);
|
||||||
|
|
||||||
point = InitPoint(mainColor, this);
|
point = InitPoint(mainColor, this);
|
||||||
}
|
}
|
||||||
|
|
|
@ -38,7 +38,7 @@ VisToolPointOfContact::VisToolPointOfContact(const VContainer *data, QGraphicsIt
|
||||||
arc_point = InitPoint(supportColor, this);
|
arc_point = InitPoint(supportColor, this);
|
||||||
lineP1 = InitPoint(supportColor, this);
|
lineP1 = InitPoint(supportColor, this);
|
||||||
lineP2 = InitPoint(supportColor, this);
|
lineP2 = InitPoint(supportColor, this);
|
||||||
circle = InitItem<QGraphicsEllipseItem>(supportColor);
|
circle = InitItem<QGraphicsEllipseItem>(supportColor, this);
|
||||||
|
|
||||||
point = InitPoint(mainColor, this);
|
point = InitPoint(mainColor, this);
|
||||||
}
|
}
|
||||||
|
|
|
@ -36,7 +36,7 @@ VisToolPointOfIntersection::VisToolPointOfIntersection(const VContainer *data, Q
|
||||||
{
|
{
|
||||||
axisP1 = InitPoint(supportColor, this);
|
axisP1 = InitPoint(supportColor, this);
|
||||||
axisP2 = InitPoint(supportColor, this);
|
axisP2 = InitPoint(supportColor, this);
|
||||||
axis2 = InitItem<QGraphicsLineItem>(supportColor);
|
axis2 = InitItem<QGraphicsLineItem>(supportColor, this);
|
||||||
|
|
||||||
point = InitPoint(mainColor, this);
|
point = InitPoint(mainColor, this);
|
||||||
}
|
}
|
||||||
|
|
|
@ -37,11 +37,11 @@ VisToolShoulderPoint::VisToolShoulderPoint(const VContainer *data, QGraphicsItem
|
||||||
{
|
{
|
||||||
line1P1 = InitPoint(supportColor, this);
|
line1P1 = InitPoint(supportColor, this);
|
||||||
line1P2 = InitPoint(supportColor, this);
|
line1P2 = InitPoint(supportColor, this);
|
||||||
line1 = InitItem<QGraphicsLineItem>(supportColor);
|
line1 = InitItem<QGraphicsLineItem>(supportColor, this);
|
||||||
|
|
||||||
line2P2 = InitPoint(supportColor, this);
|
line2P2 = InitPoint(supportColor, this);
|
||||||
line2 = InitItem<QGraphicsLineItem>(supportColor);
|
line2 = InitItem<QGraphicsLineItem>(supportColor, this);
|
||||||
line3 = InitItem<QGraphicsLineItem>(supportColor);
|
line3 = InitItem<QGraphicsLineItem>(supportColor, this);
|
||||||
|
|
||||||
point = InitPoint(mainColor, this);
|
point = InitPoint(mainColor, this);
|
||||||
}
|
}
|
||||||
|
|
|
@ -39,11 +39,11 @@ VisToolTriangle::VisToolTriangle(const VContainer *data, QGraphicsItem *parent)
|
||||||
{
|
{
|
||||||
axisP1 = InitPoint(supportColor, this);
|
axisP1 = InitPoint(supportColor, this);
|
||||||
axisP2 = InitPoint(supportColor, this);
|
axisP2 = InitPoint(supportColor, this);
|
||||||
axis = InitItem<QGraphicsPathItem>(supportColor);
|
axis = InitItem<QGraphicsPathItem>(supportColor, this);
|
||||||
hypotenuseP1 = InitPoint(supportColor, this);
|
hypotenuseP1 = InitPoint(supportColor, this);
|
||||||
hypotenuseP2 = InitPoint(supportColor, this);
|
hypotenuseP2 = InitPoint(supportColor, this);
|
||||||
foot1 = InitItem<QGraphicsLineItem>(supportColor);
|
foot1 = InitItem<QGraphicsLineItem>(supportColor, this);
|
||||||
foot2 = InitItem<QGraphicsLineItem>(supportColor);
|
foot2 = InitItem<QGraphicsLineItem>(supportColor, this);
|
||||||
|
|
||||||
point = InitPoint(mainColor, this);
|
point = InitPoint(mainColor, this);
|
||||||
}
|
}
|
||||||
|
|
|
@ -85,6 +85,16 @@ protected:
|
||||||
connect(scene, &VMainGraphicsScene::NewFactor, item, &Visualization::SetFactor);
|
connect(scene, &VMainGraphicsScene::NewFactor, item, &Visualization::SetFactor);
|
||||||
connect(scene, &VMainGraphicsScene::mouseMove, item, &Visualization::MousePos);
|
connect(scene, &VMainGraphicsScene::mouseMove, item, &Visualization::MousePos);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
template <class Item>
|
||||||
|
Item *InitItem(const QColor &color, QGraphicsItem *parent)
|
||||||
|
{
|
||||||
|
Item *item = new Item(parent);
|
||||||
|
item->setPen(QPen(color, qApp->toPixel(qApp->widthHairLine())/factor));
|
||||||
|
item->setZValue(1);
|
||||||
|
item->setFlags(QGraphicsItem::ItemStacksBehindParent);
|
||||||
|
return item;
|
||||||
|
}
|
||||||
private:
|
private:
|
||||||
Q_DISABLE_COPY(Visualization)
|
Q_DISABLE_COPY(Visualization)
|
||||||
};
|
};
|
||||||
|
|
Loading…
Reference in New Issue
Block a user