Changeset 1177


Ignore:
Timestamp:
Mar 31, 2005, 4:20:14 PM (20 years ago)
Author:
prow
Message:

nearly fixed issues with duplicate segments/vertices in outline draw.

Location:
inundation/ga/storm_surge/pmesh
Files:
2 edited

Legend:

Unmodified
Added
Removed
  • inundation/ga/storm_surge/pmesh/mesh.py

    r1159 r1177  
    21192119
    21202120
    2121     def weed(self):
    2122         #FIXME - for backwards compatibility.
     2121    def weed(self,Vertices,Segments):
    21232122        #weed out existing duplicates
    21242123        print 'len(self.getUserSegments())'
     
    21282127
    21292128        point_keys = {}
     2129        for vertex in Vertices:
     2130            point = (vertex.x,vertex.y)
     2131            point_keys[point]=vertex
     2132
     2133        line_keys = {}
     2134        for segment in Segments:
     2135            vertex1 = segment.vertices[0]
     2136            vertex2 = segment.vertices[1]
     2137            point1 = (vertex1.x,vertex1.y)
     2138            point2 = (vertex2.x,vertex2.y)
     2139            segment.vertices[0]=point_keys[point1]
     2140            segment.vertices[1]=point_keys[point2]
     2141            vertex1 = segment.vertices[0]
     2142            vertex2 = segment.vertices[1]
     2143            point1 = (vertex1.x,vertex1.y)
     2144            point2 = (vertex2.x,vertex2.y)
     2145            line1 = (point1,point2)
     2146            line2 = (point2,point1)
     2147            if not (line_keys.has_key(line1) \
     2148                 or line_keys.has_key(line2)):
     2149                 line_keys[line1]=segment
     2150        Vertices=point_keys.values()
     2151        Segments=line_keys.values()
     2152        return Vertices,Segments
     2153
     2154    def triangles_to_polySet(self,setName):
     2155        #turn the triangles into a set
     2156        Triangles = self.sets[self.setID[setName]]
     2157        Triangles_dict = {}
     2158        for triangle in Triangles:
     2159            Triangles_dict[triangle]=None
     2160
     2161        userVertices = {}
     2162        userSegments = []
     2163        point_keys = {}
    21302164        for vertex in self.getUserVertices():
    21312165            point = (vertex.x,vertex.y)
    2132             if point_keys.has_key(point):
    2133                 self.userVertices.remove(vertex)
    2134             else: point_keys[point]=vertex
     2166            point_keys[point]=vertex
    21352167
    21362168        line_keys = {}
     
    21402172            point1 = (vertex1.x,vertex1.y)
    21412173            point2 = (vertex2.x,vertex2.y)
    2142             segment.vertices[0]=point_keys[point1]
    2143             segment.vertices[1]=point_keys[point2]
     2174            #segment.vertices[0]=point_keys[point1]
     2175            #segment.vertices[1]=point_keys[point2]
     2176            #vertex1 = segment.vertices[0]
     2177            #vertex2 = segment.vertices[1]
     2178            #point1 = (vertex1.x,vertex1.y)
     2179            #point2 = (vertex2.x,vertex2.y)
    21442180            line1 = (point1,point2)
    21452181            line2 = (point2,point1)
    2146             if line_keys.has_key(line1) or line_keys.has_key(line2):
    2147                 self.userSegments.remove(segment)
    2148             else: line_keys[line1]=None
    2149         #end backward-compatibility stuff
    2150 
    2151     def triangles_to_polySet(self,setName):
    2152         ##
    2153         #self.weed()#FIXME for back-compatibilty - delete sometime
    2154         ##
    2155 
    2156 
    2157         #build a set of existing segments
    2158         line_keys = {}
    2159         for segment in self.getUserSegments():
    2160             vertex1 = segment.vertices[0]
    2161             vertex2 = segment.vertices[1]
    2162             line = ((vertex1.x,vertex1.y),(vertex2.x,vertex2.y))
    2163             line_keys[line]=None
    2164 
    2165         #build a set of existing vertexes
    2166         point_keys = {}
    2167         for vertex in self.getUserVertices():
    2168             point = (vertex.x,vertex.y)
    2169             point_keys[point]=vertex
    2170 
    2171         #turn the triangles into a set
    2172         Triangles = self.sets[self.setID[setName]]
    2173         Triangles_dict = {}
    2174         for triangle in Triangles:
    2175             Triangles_dict[triangle]=None
    2176 
    2177         userVertices = {}
    2178         userSegments = []
    2179         index = 0
     2182            if not (line_keys.has_key(line1) \
     2183                 or line_keys.has_key(line2)):
     2184                 line_keys[line1]=segment
     2185
    21802186        for triangle in Triangles:
    21812187            for i in (0,1,2):
     
    21912197                        userVertices[a]=True
    21922198                        point_keys[(a.x,a.y)]=a
    2193                     else: userVertices[a]=point_keys[(a.x,a.y)]
     2199                    else:
     2200                        a=point_keys[(a.x,a.y)]
     2201                        userVertices[a]=point_keys[(a.x,a.y)]
    21942202                    assert userVertices.has_key(a)
    21952203
     
    21992207                        userVertices[b]=True
    22002208                        point_keys[(b.x,b.y)]=b
    2201                     else: userVertices[b]=point_keys[(b.x,b.y)]
     2209                    else:
     2210                        b=point_keys[(b.x,b.y)]
     2211                        userVertices[b]=point_keys[(b.x,b.y)]
    22022212                    assert userVertices.has_key(b) 
    22032213
     
    22082218                        assert ((a.x,a.y)!=(b.x,b.y))
    22092219                        assert a!=b
    2210                         userSegments.append((a,b))
     2220                        userSegments.append(Segment(a,b))
    22112221                        line_keys[((a.x,a.y),(b.x,b.y))]=None
    22122222
    2213         return userVertices, userSegments
     2223        userVertices,userSegments = self.weed(userVertices.keys(),userSegments)
     2224        self.userVertices.extend(userVertices)
     2225        self.userSegments.extend(userSegments)
     2226        self.userVertices,self.userSegments = \
     2227           self.weed(self.userVertices,self.userSegments)
    22142228
    22152229    def threshold(self,setName,min=None,max=None,attribute_name = 'elevation'):
  • inundation/ga/storm_surge/pmesh/pmesh.py

    r1159 r1177  
    339339
    340340    def triangles_to_polySet(self,parent):
    341         vertices, segments = self.mesh.triangles_to_polySet(self.selSet)
    342         event = None
    343         for v in vertices.keys():
    344             if vertices[v] is True:
    345                 x = v.x*self.SCALE
    346                 y = v.y*self.SCALE
    347                 vertices[v]=self.drawVertex(x,y,event)
    348         print 'segments'
    349         print segments
    350         print 'vertices.keys()'
    351         print vertices.keys()
    352         for s in segments:
    353             v0 = vertices[s[0]]
    354             v1 = vertices[s[1]]
    355             self.drawSegment(v0,v1)
     341        self.mesh.triangles_to_polySet(self.selSet)
     342        #event = None
     343        #for v in vertices.keys():
     344        #    if vertices[v] is True:
     345        #        x = v.x*self.SCALE
     346        #        y = v.y*self.SCALE
     347        #        vertices[v]=self.drawVertex(x,y,event)
     348        #print 'segments'
     349        #print segments
     350        #print 'vertices.keys()'
     351        #print vertices.keys()
     352        #for s in segments:
     353        #    v0 = vertices[s[0]]
     354        #    v1 = vertices[s[1]]
     355        #    self.drawSegment(v0,v1)
     356        self.canvas.delete(ALL)
     357        self.visualiseMesh(self.mesh)
    356358
    357359    def selectTriangles(self,setName):
Note: See TracChangeset for help on using the changeset viewer.