Ich arbeite an einer rein kontinuierlichen Physik-Engine und muss Algorithmen für die Erkennung von Kollisionen in breiten und engen Phasen auswählen. "Rein kontinuierlich" bedeutet, dass ich niemals Kreuzungstests durchführe, sondern Wege finden möchte, um jede Kollision zu erfassen, bevor sie auftritt, und sie in den von TOI geordneten Stapel "Geplante Kollisionen" zu legen.
Breite Phase Die einzige kontinuierliche Breitphasenmethode, die ich mir vorstellen kann, besteht darin, jeden Körper in einen Kreis einzuschließen und zu testen, ob sich jeder Kreis jemals mit einem anderen überlappt. Dies scheint jedoch schrecklich ineffizient zu sein und es fehlt jegliches Keulen.
Ich habe keine Ahnung, welche kontinuierlichen Analoga für die heutigen diskreten Kollisions-Keulungsmethoden wie Quad-Bäume existieren könnten. Wie kann ich unangemessene und sinnlose Tests verhindern, wie dies bei einem diskreten Motor der Fall ist? Ich möchte auch Kollisionen sehen können, die mehr als einen Frame vor mir liegen.
Enge Phase
Ich habe es geschafft, den engen SAT eher an eine kontinuierliche als an eine diskrete Überprüfung anzupassen, aber ich bin sicher, dass es andere bessere Algorithmen in Zeitungen oder Websites gibt, auf die ihr vielleicht gestoßen seid.
Welche verschiedenen schnellen oder genauen Algorithmen schlagen Sie vor, die ich verwende, und welche Vor- / Nachteile hat jeder?
Schlussbemerkung:
Ich sage Techniken und keine Algorithmen, weil ich noch nicht entschieden habe, wie ich verschiedene Polygone speichern soll, die konkav, konvex, rund oder sogar löchrig sein können. Ich habe vor, eine Entscheidung darüber zu treffen, basierend auf den Anforderungen des Algorithmus (wenn ich beispielsweise einen Algorithmus wähle, der ein Polygon in Dreiecke oder konvexe Formen zerlegt, speichere ich die Polygondaten einfach in dieser Form).