Ignore:
Timestamp:
May 8, 2005, 11:50:32 PM (20 years ago)
Author:
steve
Message:

Playing with coloured surfaces

File:
1 edited

Legend:

Unmodified
Added
Removed
  • inundation/ga/storm_surge/pyvolution/realtime_visualisation.py

    r773 r1295  
    1111        #n = vector(0,0,0)
    1212
    13     return n   
     13    return n
    1414
    1515
     
    2020
    2121        #Outward normal
    22        
     22
    2323        self.normal=normal(v1-v0, v2-v0)
    2424
    2525        self.panel = faces(frame = frame)
    26         self.backpanel = faces(frame = frame)       
     26        self.backpanel = faces(frame = frame)
    2727        for v in (v0,v1,v2):
    2828            self.panel.append(pos=v, normal = self.normal, color=color)
    2929
    3030        for v in (v2,v1,v0):
    31             self.backpanel.append(pos=v, normal = -self.normal, color=color)           
    32 
    33            
     31            self.backpanel.append(pos=v, normal = -self.normal, color=color)
     32
     33
    3434    def move(self,v):
    3535        """Move panel in direction given by vector v
     
    3737
    3838        for vertex in self.panel.pos:
    39             vertex += v           
     39            vertex += v
    4040
    4141    def update_height(self,d,fix_baseline=False):
     
    4747        v0 = self.panel.pos[0]
    4848        v1 = self.panel.pos[1]
    49         v2 = self.panel.pos[2]       
    50        
     49        v2 = self.panel.pos[2]
     50
    5151        n = normal(v1-v0, self.normal)
    5252
     
    5454            self.panel.pos[2] -= d*n
    5555        else:
    56             self.panel.pos[:2] += d*n       
     56            self.panel.pos[:2] += d*n
    5757
    5858    def update_color(self, c):
     
    6161
    6262        self.panel.color = c
    63        
     63
    6464
    6565    def set_vertexheights(self, heights, floor_heights = None):
     
    7070            floor_heights = zeros(heights.shape, Float)
    7171
    72         all_vertices_below_threshold = True   
     72        all_vertices_below_threshold = True
    7373        for k in range(3):
    7474            w = heights[k]
     
    7777            if w-z >= hmin:
    7878                all_vertices_below_threshold = False
    79            
     79
    8080            vertex = self.panel.pos[k]
    8181            vertex[2] = w
     
    8585
    8686
    87         #Update color to visualise dry areas 
    88         if all_vertices_below_threshold: 
     87        #Update color to visualise dry areas
     88        if all_vertices_below_threshold:
    8989            self.panel.color = self.bottom_color
    90             self.backpanel.color = self.bottom_color               
     90            self.backpanel.color = self.bottom_color
    9191        else:
    9292            self.panel.color = self.top_color
     
    9494
    9595
    96         #update normal   
     96        #update normal
    9797        v0 = self.panel.pos[0]
    9898        v1 = self.panel.pos[1]
     
    104104        self.backpanel.normal=-n
    105105
    106        
     106
    107107
    108108
     
    120120    except:
    121121        bed = False
    122        
     122
    123123    N = Q.vertex_values.shape[0]
    124124
     
    128128        z0 = Q.vertex_values[i, 0]
    129129        z1 = Q.vertex_values[i, 1]
    130         z2 = Q.vertex_values[i, 2]       
     130        z2 = Q.vertex_values[i, 2]
    131131
    132132        x0, y0 = domain.get_vertex_coordinate(i,0)
    133133        x1, y1 = domain.get_vertex_coordinate(i,1)
    134         x2, y2 = domain.get_vertex_coordinate(i,2)       
    135        
     134        x2, y2 = domain.get_vertex_coordinate(i,2)
     135
    136136        V0 = vector(x0, y0, z0)
    137137        V1 = vector(x1, y1, z1)
     
    149149
    150150        col = (c0,c1,c2)
    151            
     151
    152152        visual_top = Triangle(V0,V1,V2,color=col,frame=fr)
    153153        visual_top.top_color = col
    154154
    155    
     155
    156156        #Bottom surface
    157157        #v0, v1, v2 = volume.vertices
     
    168168        V0 = vector(x0, y0, z0)
    169169        V1 = vector(x1, y1, z1)
    170         V2 = vector(x2, y2, z2)       
     170        V2 = vector(x2, y2, z2)
    171171
    172172        c0 = 0.3
     
    176176            c2 = 0.4*c2   #To show triangles in slightly different shades
    177177
    178         col = (c0,c1,c2)   
     178        col = (c0,c1,c2)
    179179        visual_bottom = Triangle(V0, V1, V2, color=col,frame=fr)
    180180        visual_top.bottom_color=col
    181        
     181
    182182        domain.visuals.append( (visual_top, visual_bottom) )
    183        
     183
    184184    update(domain)
    185     #print 'Scale', scene.scale   
    186 
    187 
    188 def update(domain):   
     185    #print 'Scale', scene.scale
     186
     187
     188def update(domain):
    189189    """Update vertex heights.
    190     The argument index refers to which conserved quantity to visualise.   
     190    The argument index refers to which conserved quantity to visualise.
    191191    If domain.smooth is set True, vertex values will be averaged
    192192    yielding a smoother surface.
     
    198198    Q = domain.quantities['stage']
    199199    N = Q.vertex_values.shape[0]
    200    
     200
    201201    #print scene.forward
    202202    #FIXME: Use smoother from pyvolution instead
     
    218218
    219219
    220     for k in range(N):   
     220    for k in range(N):
    221221        if domain.smooth:
    222222            #The averages
    223223            x = zeros(3, Float)
    224             for i in range(3):           
     224            for i in range(3):
    225225                vertex = domain.triangles[k, i]
    226226                A = array(vertex_heights[vertex])
    227227                x[i] = sum(A)/len(A)
    228         else:       
     228        else:
    229229            #The true values
    230230            x = [Q.vertex_values[k, 0],
     
    232232                 Q.vertex_values[k, 2]]
    233233
    234            
     234
    235235        #Do it
    236236        floor_heights = array([pos[2] for pos in domain.visuals[k][1].panel.pos])
    237        
     237
    238238        domain.visuals[k][0].set_vertexheights(x, floor_heights)
    239239
     
    246246#Original
    247247scene.center = (0.5,0.5,0)
    248 scene.forward = vector(-0.1, 0.5, -0.5)
     248scene.forward = vector(0.0, 0.5, -0.5)
    249249
    250250#Temporary (for bedslope)
    251 #scene.forward = vector(0.0006, 0.7, -0.03)   
     251#scene.forward = vector(0.0006, 0.7, -0.03)
    252252
    253253
     
    258258#Temporary for hackett - end
    259259
    260    
     260
    261261scene.ambient = 0.4
    262262scene.lights = [(0.6, 0.3, 0.2), (0.1, -0.5, 0.4), (-0.1, 0.1, -0.4),
     
    266266
    267267
    268 
Note: See TracChangeset for help on using the changeset viewer.