Sto provando a sperimentare con motori di fisica 2D in C++. Finora, sembra il più popolare è Box2D. Sfortunatamente, Box2D è un motore di fisica del corpo rigido e non mi aiuterà veramente con quello che voglio provare.Motori fisici 2D non rigidi in C++
Voglio essere in grado di definire una forma che ha un numero di vertici uniti da molle, in modo tale che quando questa forma si scontra con forme rigide o altre non rigide, la sua forma sarà flessibile.
Ora ho cercato di pensare a modi di fare questo in Box2D utilizzando solo corpi rigidi, ma ci sembra sempre di essere difetti:
- Utilizzare rettangoli o segmenti di linea per i bordi esterni della forma flessibile . Questi si scontreranno con altre forme. Sfortunatamente, non sono elastici, quindi l'effetto desiderato non sarebbe visto.
- Ogni vertice della forma potrebbe essere un corpo con la sua piccola forma circolare. Questi corpi possono quindi essere uniti tra loro da molle. Ciò funzionerebbe benissimo in termini di deformazione della forma, ma immaginate se la forma fosse atterrato su una punta rigida e il picco appena passato tra i vertici. Quindi la forma si sarebbe bloccata sul picco.
Quindi qual è il modo migliore per eseguire questo tipo di fisica in C++? Preferibilmente senza dover scrivere un intero motore fisico. Forse mi manca solo una funzionalità di Box2D. Forse non è la scelta giusta. Allora qual è la scelta giusta?