Sto calcolando il risultato scontrando coppie di oggetti convessi 2D (senza rotazione), utilizzando the basic equations on wikipedia. Tuttavia, quando ci sono dipendenze, come due oggetti colpire un altro oggetto allo stesso tempo:Come gestire più collisioni elastiche simultanee?
Come qui, con oggetti 1 e 2 colpendo 3 allo stesso momento, l'approccio a coppie fallisce . A seconda dell'ordine in cui computo le collisioni (1-3 prima o 2-3 prima), otterrò risultati diversi. L'iterazione ripetuta attraverso le collisioni darà comunque risultati dipendenti dall'ordine.
L'ho già impostato in modo da poter capire quali oggetti sono in contatto tra loro, quindi il mio codice saprà quando calcolerà una di queste coppie che l'oggetto 3 si scontrerà con un altro oggetto in quel momento (quindi il 1- 3 collisioni sapranno della collisione 2-3 e viceversa). Saprò quali bordi/angoli sono in contatto con cosa, pure.
Qualunque sia la soluzione deve essere robusto ... Per esempio, se l'installazione è resa più complicata come questi 2 esempi:
Il processo deve essere in grado di gestire tale e peggio. Ogni possibile catena di contatti/collisioni simultanee. Avrò tutti i dati a portata di mano che li descrivono, quindi "solo" ho bisogno di sapere come risolvere il caso generale di questi sistemi. Al momento non sto facendo nulla con la rotazione, il che semplifica le cose.
Sembra che implichi il raggruppamento di oggetti insieme, ma l'interferenza causata da spigoli che non sono ortogonali (si veda l'ultimo esempio con un esagono) sembrerebbe far fallire quell'approccio.
Ho visto a similar question che è stato chiesto prima, ma la risposta data non è mai stata verificata (vicolo cieco?). Non sono sicuro di come la propagazione degli shock possa risolvere il mio primo esempio, come C si sta allontanando dopo la prima collisione ... quindi quale shock c'è da propagare? edit: Ok, ora vedo che le collisioni simultanee e la propagazione degli shock sono due idee diverse, ecco perché non sembra utile.
In realtà esiste una risposta alla domanda a cui ci si collega e che potrebbe essere quello che stai cercando. –
@AlexSzatmary Non sono sicuro di quale approccio sia applicabile al mio primo esempio. Una volta che si è verificata una collisione, C si allontanerà ... Non c'è nessuno shock da propagare quando si ha a che fare con la seconda collisione. – user173342