Changeset 710
- Timestamp:
- Dec 15, 2004, 9:37:45 AM (20 years ago)
- File:
-
- 1 edited
Legend:
- Unmodified
- Added
- Removed
-
inundation/ga/storm_surge/alpha_shape/alpha_shape.py
r691 r710 231 231 return 232 232 233 233 def _edge_intervals_array_based(self): 234 # THIS DOESN'T WORK YET 235 236 # for each edge, find triples 237 # (length/2, min_adj_triradius, max_adj_triradius) if unattached 238 # (min_adj_triradius, min_adj_triradius, max_adj_triradius) if attached. 239 240 edges = [] 241 edgenbrs = [] 242 edgeinterval = [] 243 244 x = self.points[:,0] 245 y = self.points[:,1] 246 ind0 = [self.deltri[j][0] for j in range(len(self.deltri))] 247 ind1 = [self.deltri[j][1] for j in range(len(self.deltri))] 248 ind2 = [self.deltri[j][2] for j in range(len(self.deltri))] 249 250 x0 = array([ x[j] for j in ind1 ]) 251 y0 = array([ y[j] for j in ind1 ]) 252 x1 = array([ x[j] for j in ind2 ]) 253 y1 = array([ y[j] for j in ind2 ]) 254 x2 = array([ x[j] for j in ind3 ]) 255 y2 = array([ y[j] for j in ind3 ]) 256 257 dx0 = x1-x2 258 dx1 = x2-x0 259 dx2 = x0-x1 260 dy0 = y1-y2 261 dy1 = y2-y0 262 dy2 = y0-y1 263 264 elen0 = sqrt(dx0*dx0 + dy0*dy0) 265 elen1 = sqrt(dx1*dx1 + dy1*dy1) 266 elen2 = sqrt(dx2*dx2 + dy2*dy2) 267 268 anglesgn0 = -dx1*dx2-dy1*dy2 269 anglesgn1 = -dx2*dx0-dy2*dy0 270 anglesgn2 = -dx0*dx1-dy0*dy1 271 272 # not sure how to convert the rest of the algorithm.... 273 274 for t in range(len(self.deltri)): 275 tri = self.deltri[t] 276 trinbr = self.deltrinbr[t] 277 278 for i in [0,1,2]: 279 j = (i+1)%3 280 k = (i+2)%3 281 if trinbr[i]==-1: 282 edges.append((tri[j], tri[k])) 283 edgenbrs.append((t, -1)) 284 edgeinterval.append([0.5*elen[i], self.triradius[t], INF]) 285 elif (tri[j]<tri[k]): 286 edges.append((tri[j], tri[k])) 287 edgenbrs.append((t, trinbr[i])) 288 edgeinterval.append([0.5*elen[i],\ 289 min(self.triradius[t],self.triradius[trinbr[i]]),\ 290 max(self.triradius[t],self.triradius[trinbr[i]]) ]) 291 else: 292 continue 293 #if angle[i]>pi/2: 294 if anglesign[i] < 0: 295 edgeinterval[-1][0] = edgeinterval[-1][1] 296 297 self.edge = edges 298 self.edgenbr = edgenbrs 299 self.edgeinterval = edgeinterval 300 #print "edges: ",edges, "\n" 301 #print "edge nbrs:", edgenbrs ,"\n" 302 #print "edge intervals: ",edgeinterval , "\n" 303 304 234 305 def _edge_intervals(self): 235 306 # for each edge, find triples
Note: See TracChangeset
for help on using the changeset viewer.