Dal punto di vista della fisica, la collisione è solo il caso estremo di una forza repulsiva tra gli oggetti. Se vuoi che si evitino automaticamente a vicenda, un modo semplice sarebbe quello di introdurre una forza graduale che li respinge a seconda di quanto sono vicini l'uno all'altro. Ad esempio, le forze elettriche soddisfano
force ∝ 1 / distance^2
Poiché questo non ha bisogno di essere fisico, puoi modificare il coefficiente e / o l'esponente, indipendentemente dal fatto che desideri rendere gli oggetti migliori evitando l'altro. Neanche è necessario rispettare una legge di potenza, puoi introdurre qualsiasi campo di forza complicato finché è ripugnante:
force = f(d) R
dove d
è la distanza di separazione, f
è una funzione che diventa sempre più grande vicino a 0
e R
è il vettore di unità che definisce la direzione tra i due oggetti.
Da una diversa angolazione, se puoi controllare la "casualità" del movimento, puoi anche influenzarlo in modo tale che non si colpiranno mai, ma ciò richiede che il tuo programma sia in grado di prevedere il movimento di altro oggetto.
Ci sono molti diversi tipi di movimento "casuale": potresti voler essere specifico su quale tipo ti interessi. Se vuoi che il movimento appaia continuo e uniforme, puoi aggiungere modifiche casuali ma piccole alla velocità vettore (cioè la grandezza e la direzione) in ogni fotogramma dell'animazione. O se vuoi che sia a scatti, puoi rendere le modifiche casuali più drastiche.