//矩形和矩形相交判断 Bool HawkRect2D::Intersect(const HawkRect2D& oRect) const { Float fDis = (GetBoundCenter() - oRect.GetBoundCenter()).Length(); if (fDis > GetBoundRadius() + oRect.GetBoundRadius()) { return false; } for (Int32 i=0;i<4;i++) { HawkLine2D oLine(GetPoint(i),GetPoint((i+1)%4)); PtRelation eRel = IsClockWise()?PT_LEFT:PT_RIGHT; if (oLine.GetPtRelation(oRect.GetPoint(0)) == eRel && oLine.GetPtRelation(oRect.GetPoint(1)) == eRel && oLine.GetPtRelation(oRect.GetPoint(2)) == eRel && oLine.GetPtRelation(oRect.GetPoint(3)) == eRel) return false; } for (Int32 i=0;i<4;i++) { HawkLine2D oLine(oRect.GetPoint(i),oRect.GetPoint((i+1)%4)); PtRelation eRel = oRect.IsClockWise()?PT_LEFT:PT_RIGHT; if (oLine.GetPtRelation(GetPoint(0)) == eRel && oLine.GetPtRelation(GetPoint(1)) == eRel && oLine.GetPtRelation(GetPoint(2)) == eRel && oLine.GetPtRelation(GetPoint(3)) == eRel) return false; } return true; }
void PathLine::updatePosition() { QLineF oLine(mapFromItem(m_oStartItem, 0, 0), mapFromItem(m_oEndItem, 0, 0)); setLine(oLine); }