La mia domanda è abbastanza semplice. Ho due tetraedri, ognuno con una posizione corrente, una velocità lineare nello spazio, una velocità angolare e un centro di massa (centro di rotazione, in realtà).Rilevazione collisione continua tra due tetraedri mobili
Avendo questi dati, sto cercando di trovare un algoritmo (veloce) che determini precisamente (1) se si colliderebbero ad un certo punto nel tempo, e se è il caso, (2) dopo quanto tempo essi colliso e (3) il punto di collisione.
La maggior parte delle persone risolverebbe questo facendo il rilevamento di collisioni triangolo-triangolo, ma ciò sprecherebbe alcuni cicli CPU su operazioni ridondanti come controllare lo stesso bordo di un tetraedro contro lo stesso bordo dell'altro tetraedro al controllo di triangoli diversi . Questo significa solo che ottimizzerò un po 'le cose. Nulla di cui preoccuparsi.
Il problema è che non sono a conoscenza di alcun algoritmo triangolo-triangolo CCD (rilevamento collisione continua) che tenga conto dell'autorotazione.
Pertanto, mi devo algoritmo che verrebbe immesso i seguenti dati:
- dati di vertice per tre triangoli
- posizione e centro di rotazione/massa
- velocità lineare e la velocità angolare
E restituirebbe quanto segue:
- Se c'è una collisione
- Dopo quanto tempo la collisione si è verificata
- In quale punto dello spazio collisione avvenuta
Grazie in anticipo per il vostro aiuto.
+1 solo perché il titolo è così bello - non avresti potuto renderlo migliore se stavi PROVANDO! -). (Scusate, non ho abbastanza esperienza nella geometria computazionale tridimensionale per aiutare davvero qui). –
Sì, è un titolo interessante. Non ricordo abbastanza matematica per risolvere questo problema, ma credo che vorrai risolvere un'equazione parametrica differenziale che modella la posizione corrente (x, y, z) = (f (t), g (t), h (t)) per ogni oggetto. Puoi ottimizzarlo scoprendo per prima cosa se sono abbastanza vicini da poter essere una collisione basata su sfere minime per ogni oggetto. Se non lo sono, non entrano in collisione. Se lo sono, allora puoi fare i calcoli complessi. – cletus
OP qui. Probabilmente userò altre tecniche per filtrare quali coppie di oggetti * hanno * bisogno * di essere testati per la collisione (alcuni la chiamano broadphase). Se nessuno trova delle equazioni reali o un modo migliore per farlo, metto tutto in una equazione a distanza (rispetto al tempo) e scrivo un algoritmo che cerca di trovare una soluzione. Per essere onesto con te, non ho davvero voglia di farlo, specialmente se è già stato fatto. – x26