ich versuche aus einer Liste von Punkten im Raum doppelte zu löschen.
Hierzu wollte ich der sort() Funktion einen Vergelichsfunktion für die Koordinaten übergeben, leider liefert sie nicht das korrekte Ergebnis.
Die Knoten sollten erst nach der x-, dann nach y- und der z-Koordinate sortiert sein, es tauchen aber Knotenfolgen auf die zwar in sich richtig sortiert sind, stehen aber nicht an der richtigen Stelle in der Liste. Liegt das an dem internen Algorithmus, der die Liste in Abschnitte zerlegt und hinterher wieder zusammensetzt? Eigentlich wollte ich diese schnellen Verfahren gerade ausnutzten, da das eigene von mir verwendete sehr langsam ist (vgl. Forumeintrag :Sortieralgorithmus - zwei Schleifenmethode)
Ich füge hier mal meine Vergleichsfunktion ein - sollte es an ihr liegen?
Code: Alles auswählen
def byCoordinates(N1,N2):
if N1.x<N2.x :return 1
elif N1.x==N2.x and N1.y<N2.y :return 1
elif N1.x==N2.x and N1.y==N2.y and N1.z<N2.z: return 1
if N1.x==N2.x and N1.y==N2.y and N1.z==N2.z: return 0
return -1
Bernd