Rotierende Bremssättel ist das Python -Modul, das einen Algorithmus mit demselben Namen implementiert.
Der Algorithmus wurde 1978 erstmals von Michalel Shamos erfunden und erhielt seinen Namen "Rotatatssättel" dank der Godfried Toussant, die ihn 1983 in seiner Zeitung vorstellte.
Die Methode ist so benannt, weil die Idee analog ist, einen federbelasteten Vernier-Bremssattel um die Außenseite eines konvexen Polygons zu drehen. Jedes Mal, wenn eine Klinge des Bremssattels flach gegen einen Rand des Polygons liegt, bildet es ein antipodales Paar, wobei der Punkt oder die Kante die gegenüberliegende Klinge berührt. Die vollständige "Rotation" des Bremssattels um das Polygon erkennt alle antipodalen Paare; Der Satz aller Paare, die als Diagramm betrachtet werden, bildet einen Sturz. Die Methode der rotierenden Bremssättel kann als projektives Dual eines Sweep-Line-Algorithmus interpretiert werden, bei dem der Sweep über die Hänge von Linien und nicht über X- oder Y-Koordinaten von Punkten liegt.
Die obige Beschreibung wurde von Wikipedia Seite adaptiert: https://en.wikipedia.org/wiki/rotating_calipers
Der Algorithmus "Drehzahner" wurde von mir für ein Universitätsprojekt implementiert. Überraschenderweise habe ich in Python eine effiziente Lösung gefunden, um eine effiziente Lösung zu finden. Deshalb wollte ich es mit allen teilen, die eine schnelle "rotierende Bremssättel" -implementierung in Python benötigen.
Da rotierende Bremssättel in der linearen Zeit läuft, benötigt es hier einen konvexen Rumpf, der hier unter Verwendung von Grahams Algorithmus berechnet wird, der in O (NLOGN) ausgeführt wird. Alles in allem Algorihms (Grahams Algorithmus + rotierende Bremssättel) Die Zeitkomplexität ist o (nLogn) + o (n) = o (nLogn)
Linux:
Beispiel für die Verwendung finden Sie hier