static void paintLinesToChildren( QGraphicsItem * qgi, QPainter * painter, QPen const & pen ) { typedef QList<QGraphicsItem*> QGIL; QGIL ch( qboard::childItems(qgi) ); if( ch.isEmpty() ) return; QRectF prect( qgi->boundingRect() ); QPointF mid( prect.left() + (prect.width() / 2), prect.top() + (prect.height() / 2) ); painter->save(); for( QGIL::iterator it = ch.begin(); ch.end() != it; ++it ) { QGraphicsItem * x = *it; QRectF xr( x->boundingRect() ); QPointF xmid( xr.center() ); //xmid = x->mapToParent( xmid ); xmid = qgi->mapFromItem( x, xmid ); painter->setPen( pen ); painter->drawLine( QLineF( mid, xmid ) ); } painter->restore(); }
/// return the index of the MHM domain of a fracture int TPZFracSet::MHMDomain(TPZFracture &frac) { TPZManVector<REAL,3> x1(3), x2(3), xmid(3); fNodeVec[frac.fNodes[0]].GetCoordinates(x1); fNodeVec[frac.fNodes[1]].GetCoordinates(x2); std::pair<uint32_t,uint32_t> key0 = NodeKey(frac.fNodes[0]); std::pair<uint32_t,uint32_t> key1 = NodeKey(frac.fNodes[1]); if(key0.first == key1.first && key0.first%fMHMSpacingInt[0] == 0) { return -1; } if(key0.second == key1.second && key0.second%fMHMSpacingInt[1] == 0) { return -1; } for (int i=0; i<3; i++) { xmid[i] = (x1[i]+x2[i])*0.5-fLowLeft[i]; } int numfacex = (fTopRight[0]-fLowLeft[0])/fMHMSpacing[0]; int numx = (xmid[0])/fMHMSpacing[0]; int numy = (xmid[1])/fMHMSpacing[1]; return numy*numfacex+numx; }