#include "polygon.h" Polygon::Polygon() : Line() { m_polygon.append(QPoint(0,0)); m_polygon.append(QPoint(0,0)); m_polygon.append(QPoint(0,0)); } bool Polygon::isHit(const QPoint &clickPoint) { QVector3D a(p2() - p1()); QVector3D r1(p1()); QVector3D rq(clickPoint); float dist = rq.distanceToLine(r1, a.normalized()); return dist < 5; } void Polygon::draw(QPainter *painter) { if (m_selected) { QPen penTemp(Qt::DotLine); penTemp.setColor(Qt::red); painter->setPen(penTemp); painter->drawEllipse(p1(), 5, 5); painter->drawEllipse(p2(), 5, 5); painter->drawEllipse(QPoint(p1().rx() + 20, p1().ry() - 20), 5, 5); } else { QPen penNormal(Qt::SolidLine); penNormal.setColor(Qt::black); painter->setPen(penNormal); } m_polygon.replace(0, p1()); m_polygon.replace(1, p2()); m_polygon.replace(2, QPoint(p1().rx() + 20, p1().ry() - 20)); painter->drawPolygon(m_polygon); }