def test_closed(self): pl = Polyline(init_points=[(1, 0), (1, 1), (0, 2)]) self.assertFalse(pl.isClosed()) pl.addPoint(1, 0) self.assertEqual(4, len(pl)) self.assertTrue(pl.isClosed()) pl = Polyline(init_points=[(1, 0), (1, 1), (0, 2)]) self.assertFalse(pl.isClosed()) pl.assertClosed() self.assertEqual(4, len(pl)) self.assertTrue(pl.isClosed())
def test_closed(self): pl = Polyline( init_points = [(1,0) , (1,1) , (0,2)]) self.assertFalse( pl.isClosed() ) pl.addPoint( 1,0 ) self.assertEqual( 4 , len(pl) ) self.assertTrue( pl.isClosed() ) pl = Polyline( init_points = [(1,0) , (1,1) , (0,2)]) self.assertFalse( pl.isClosed() ) pl.assertClosed( ) self.assertEqual( 4 , len(pl) ) self.assertTrue( pl.isClosed() )
def splitFaultBlocks(self , grid , fault_blocks ): boundingPolygon = Polyline(init_points = grid.getBoundingBox2D()) boundingPolygon.assertClosed() if self.hasPolygon(): if len(self.edges) == 1: return self.splitFaultBlockClosedPolygon( grid , fault_blocks , self.edges[0] ) else: current_fault_block_layer = fault_blocks k = fault_blocks.getK() for edge in self.edges: if isinstance(edge , Polyline): # Start on a brand new fault block layer. next_fault_block_layer = FaultBlockLayer( grid , k ) for block in current_fault_block_layer: if block.containsPolyline(edge): print "Block %d is split due to edge:%s" % (block.getBlockID() , edge.name()) sliced = GeometryTools.slicePolygon( boundingPolygon , edge ) inside_list = [] outside_list = [] for p in block: if GeometryTools.pointInPolygon( (p.x , p.y) , sliced ): inside_list.append( p ) else: outside_list.append( p ) if len(inside_list) * len(outside_list) == 0: new_block = next_fault_block_layer.addBlock( ) for p in inside_list: new_block.addCell(p.i , p.j) for p in outside_list: new_block.addCell(p.i , p.j) else: layer = Layer( grid.getNX() , grid.getNY() ) for p in inside_list: layer[p.i , p.j] = 1 for p in outside_list: layer[p.i , p.j] = 2 next_fault_block_layer.scanLayer( layer ) else: next_fault_block_layer.insertBlockContent( block ) current_fault_block_layer = next_fault_block_layer return current_fault_block_layer else: return fault_blocks
def test_extend_to_edge(self): bound = Polyline( init_points = [(0,0) , (1,0) , (1,1) , (0,1)] ) l1 = Polyline( init_points = [(-1,0.5) , (0.5, 0.5)]) l2 = Polyline( init_points = [(0.25,0.25) , (0.75, 0.75)]) # Bound is not closed with self.assertRaises(AssertionError): GeometryTools.extendToEdge( bound , l1 ) bound.assertClosed() # l1 is not fully contained in bound with self.assertRaises(ValueError): GeometryTools.extendToEdge( bound , l1 ) l3 = GeometryTools.extendToEdge( bound , l2 ) self.assertEqual( l3[0] , (0.00,0.00)) self.assertEqual( l3[1] , (0.25,0.25)) self.assertEqual( l3[2] , (0.75,0.75)) self.assertEqual( l3[3] , (1.00,1.00)) self.assertEqual( len(l3) , 4)
def test_extend_to_edge(self): bound = Polyline(init_points=[(0, 0), (1, 0), (1, 1), (0, 1)]) l1 = Polyline(init_points=[(-1, 0.5), (0.5, 0.5)]) l2 = Polyline(init_points=[(0.25, 0.25), (0.75, 0.75)]) # Bound is not closed with self.assertRaises(AssertionError): GeometryTools.extendToEdge(bound, l1) bound.assertClosed() # l1 is not fully contained in bound with self.assertRaises(ValueError): GeometryTools.extendToEdge(bound, l1) l3 = GeometryTools.extendToEdge(bound, l2) self.assertEqual(l3[0], (0.00, 0.00)) self.assertEqual(l3[1], (0.25, 0.25)) self.assertEqual(l3[2], (0.75, 0.75)) self.assertEqual(l3[3], (1.00, 1.00)) self.assertEqual(len(l3), 4)