Benutzer-Werkzeuge

Webseiten-Werkzeuge


Seitenleiste

ss15:projekte_im_sommersemester_15:exktraktion:dokumentation

Extraktion der Polygone

class Wedge(object):
	def __init__(self,a,b,c,alpha):
		self.a=a
		self.b=b
		self.c=c
		self.alpha=alpha
 
def getWedges(knotenliste):
	from operator import attrgetter
	allWedges=[]
 
	for knoten in knotenliste:
		orderedconnections=[]
 
		anzahl_nachbarn=0
		for nachbar in knoten.nachbarn:
 
			alpha=np.arctan2(nachbar.koords[1]-knoten.koords[1], nachbar.koords[0]-knoten.koords[0])
			if alpha<0:
				alpha+=2*math.pi
			orderedconnections.append([ nachbar.selfindex, alpha])
			anzahl_nachbarn+=1
 
 
		orderedconnections.sort(key=itemgetter(1))
 
 
		for i in range(anzahl_nachbarn):
			this=orderedconnections[i-1]
			afterthis=orderedconnections[i]
			neueswedge=Wedge(this[0],knoten.selfindex,afterthis[0],this[1]-afterthis[1])
			allWedges.append(neueswedge)
 
	allWedges.sort(key=attrgetter('a','b'))
	return allWedges
 
 
 
def getPolygons(wedgeliste,knotenliste):
	allpolygons=[]
 
 
	def search(x):
		s1=x.b
		s2=x.c
		for wedge in wedgeliste:
			if wedge.a==s1 and wedge.b==s2:
				return wedge
 
 
 
	while len(wedgeliste)>0:
		start=x=wedgeliste[0]
		currentpolygon=[]	
		while True:
			currentpolygon.append(x.a)
			x=search(x)
			if x is not None:
				wedgeliste.remove(x)
				if x is start:
 
					allpolygons.append(currentpolygon)
					break
 
	return allpolygons
ss15/projekte_im_sommersemester_15/exktraktion/dokumentation.txt · Zuletzt geändert: 2016/05/10 14:46 (Externe Bearbeitung)