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.

File:
1 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'):
Note: See TracChangeset for help on using the changeset viewer.