Exemple #1
0
 def test_QPolygon_intersection(self):
   tri1 = QVectorF([(0,0),(0,1),(1,0)])
   tri2 = QVectorF([(1,0),(0,0),(1,1)])
   tri3 = QVectorF([(.5,.5),(1,0),(0,0),(.5,.5)])
   tri3i = QVector([(1,1),(1,0),(0,0),(1,1)])
   sq1 = QVectorF([(0,0),(0,1),(1,1),(1,0)])
   # Intersect two triangles
   p1 = QPolygonF(tri1)
   p2 = QPolygonF(tri2)
   p3 = p1.intersected(p2)
   self.assertTrue( p1 == p1 )
   self.assertTrue( p1 == QPolygonF(tri1) )
   self.assertTrue( p3 == QPolygonF(tri3) )
   # Intersect two integer triangles
   p1 = QtGui.QPolygon(map(lambda (x,y): QtCore.QPoint(x,y), [(0,0),(0,1),(1,0)]))
   p2 = QtGui.QPolygon(map(lambda (x,y): QtCore.QPoint(x,y), [(1,0),(0,0),(1,1)]))
   p3 = p1.intersected(p2)
   self.assertTrue( p3 == QtGui.QPolygon(tri3i) )
   # Test containment/overlapping
   p1 = QtGui.QPolygonF(sq1)
   for v1 in sq1: self.assertTrue( p1.contains(v1) )        # vertices are contained
   self.assertTrue( p1.translated(2,0).intersected(p1).isEmpty() )
   self.assertTrue( p1.translated(1,0).intersected(p1).isEmpty() ) # common edges do not overlap
   self.assertFalse( p1.translated(.5,0).intersected(p1).isEmpty() )