Changeset 1159


Ignore:
Timestamp:
Mar 29, 2005, 4:26:39 PM (20 years ago)
Author:
prow
Message:

tri2polyset - weeding duplicate verities

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

Legend:

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

    r1107 r1159  
    21192119
    21202120
     2121    def weed(self):
     2122        #FIXME - for backwards compatibility.
     2123        #weed out existing duplicates
     2124        print 'len(self.getUserSegments())'
     2125        print len(self.getUserSegments())
     2126        print 'len(self.getUserVertices())'
     2127        print len(self.getUserVertices())
     2128
     2129        point_keys = {}
     2130        for vertex in self.getUserVertices():
     2131            point = (vertex.x,vertex.y)
     2132            if point_keys.has_key(point):
     2133                self.userVertices.remove(vertex)
     2134            else: point_keys[point]=vertex
     2135
     2136        line_keys = {}
     2137        for segment in self.getUserSegments():
     2138            vertex1 = segment.vertices[0]
     2139            vertex2 = segment.vertices[1]
     2140            point1 = (vertex1.x,vertex1.y)
     2141            point2 = (vertex2.x,vertex2.y)
     2142            segment.vertices[0]=point_keys[point1]
     2143            segment.vertices[1]=point_keys[point2]
     2144            line1 = (point1,point2)
     2145            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
    21212151    def triangles_to_polySet(self,setName):
    2122 
     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
    21232172        Triangles = self.sets[self.setID[setName]]
    21242173        Triangles_dict = {}
     
    21312180        for triangle in Triangles:
    21322181            for i in (0,1,2):
     2182                #for every triangles neighbour:
     2183
    21332184                if not Triangles_dict.has_key(triangle.neighbors[i]):
     2185                #if the neighbour is not in the set:
    21342186                    a = triangle.vertices[i-1]
    21352187                    b = triangle.vertices[i-2]
    2136                     userVertices[a]=0
    2137                     userVertices[b]=0
    2138                     userSegments.append([a,b])
     2188                    if not point_keys.has_key((a.x,a.y)):
     2189                        #if point a does not already exist
     2190                        #then add it to the points.
     2191                        userVertices[a]=True
     2192                        point_keys[(a.x,a.y)]=a
     2193                    else: userVertices[a]=point_keys[(a.x,a.y)]
     2194                    assert userVertices.has_key(a)
     2195
     2196                    if not point_keys.has_key((b.x,b.y)):
     2197                        #if point b does not already exist
     2198                        #then add it to the points.
     2199                        userVertices[b]=True
     2200                        point_keys[(b.x,b.y)]=b
     2201                    else: userVertices[b]=point_keys[(b.x,b.y)]
     2202                    assert userVertices.has_key(b) 
     2203
     2204                    if not (line_keys.has_key(((a.x,a.y),(b.x,b.y)))\
     2205                         or line_keys.has_key(((b.x,b.y),(a.x,a.y)))):
     2206                        #if the segment does not already exist then
     2207                        #add it to the segments
     2208                        assert ((a.x,a.y)!=(b.x,b.y))
     2209                        assert a!=b
     2210                        userSegments.append((a,b))
     2211                        line_keys[((a.x,a.y),(b.x,b.y))]=None
     2212
    21392213        return userVertices, userSegments
    21402214
  • inundation/ga/storm_surge/pmesh/pmesh.py

    r1107 r1159  
    342342        event = None
    343343        for v in vertices.keys():
    344             x = v.x*self.SCALE
    345             y = v.y*self.SCALE
    346             vertices[v]=self.drawVertex(x,y,event)
     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()
    347352        for s in segments:
    348353            v0 = vertices[s[0]]
Note: See TracChangeset for help on using the changeset viewer.