from __future__ import division import matplotlib.pyplot as plt class Weg(object): def __init__(self,k1,k2,strassennetz=True): self.k1=k1 self.k2=k2 self.nebenstrasse=False self.color='black' self.linewidth=3 if (k1.nebenstrasse or k2.nebenstrasse): self.nebenstrasse=True self.linewidth=1 self.color='blue' if strassennetz: self.k1.nachbarn.append(k2) self.k2.nachbarn.append(k1) self.k1.wege.append(self) self.k2.wege.append(self) self.v=k2.koords-k1.koords self.r1=[] self.r2=[] def selfplot(self): plt.plot([self.k1.koords[0],self.k2.koords[0]],[self.k1.koords[1],self.k2.koords[1]],color=self.color,linewidth=self.linewidth) def __repr__(self): return self.k1.__repr__()+self.k2.__repr__() def delete(self): self.k1.nachbarn.remove(self.k2) self.k2.nachbarn.remove(self.k1) self.k1.wege.remove(self) self.k2.wege.remove(self)
Das Weg-Objekt (entspricht Kanten in der Graphentheorie) hat eingespeichert, aus welchen beiden Knoten es besteht. Dazu gibt hat es eine Funktion mit der es sich selber in Matplotlib plotten kann. Außerdem kann sich ein Weg löschen und dabei „keine Spuren hinterlassen“. Dies ist sinvoll weil einige Teile in unserer Datenstruktur leicht redundant sind.