Sto lavorando su un motore fisico puramente continuo e devo scegliere algoritmi per il rilevamento di collisioni in fase ampia e stretta. "Puramente continuo" significa che non eseguo mai test di intersezione, ma invece voglio trovare il modo di catturare ogni collisione prima che accada, e inserirle tutte nello stack "collisioni pianificate" che viene ordinato da TOI.
Fase larga L'unico metodo continuo a fase larga che mi viene in mente è quello di racchiudere ogni corpo in un cerchio e verificare se ogni cerchio si sovrapporrà mai a un altro. Questo sembra orribilmente inefficiente e manca di abbattimento.
Non ho idea di quali analoghi continui potrebbero esistere per i metodi di abbattimento delle collisioni discrete di oggi come i quad-alberi. Come potrei fare per prevenire test ampi inappropriati e inutili come fa un motore discreto? Vorrei anche essere in grado di vedere le collisioni più di 1 fotogramma avanti.
Narrow Phase
Sono riuscito ad adattare lo stretto SAT a un controllo continuo piuttosto che discreto, ma sono sicuro che ci sono altri algoritmi migliori là fuori in documenti o siti che potresti aver incontrato.
Quali vari algoritmi veloci o precisi mi consigliate di utilizzare e quali sono i vantaggi / gli svantaggi di ciascuno?
Nota finale:
dico tecniche e non algoritmi perché non ho ancora deciso in che modo memorizzare diversi poligoni che potrebbero essere concavi, convessi, rotondi o addirittura dotati di buchi. Ho intenzione di prendere una decisione in base a ciò che richiede l'algoritmo (ad esempio, se scelgo un algoritmo che suddivide un poligono in triangoli o forme convesse, memorizzerò semplicemente i dati del poligono in questo modulo).