Oppure

Loading
07/09/14 10:01
pbe
Sto lavorando con la Processing e vorrei capire come poter rilevare e gestire le collisioni tra per esempio due figure in movimento.
Spero che possiate aiutarmi al più presto.
Grazie:k:
aaa
07/09/14 12:51
Roby94
Analisi

Abbiamo la posizione dei due elementi nel singolo frame(quindi parliamo all'interno della funzione draw se usi ancora processing), chiamiamo i punti che definiscono la posizione del centro dei due oggetti p1 e p2 supponendo che siano entrambi di forma circolare, con raggio ripettivamente r1 r2
Ora ricavi le disequazioni dei due oggetti, in questo caso:
(x-p1x)^2+(y-p1y)^2<r1^2
(x-p2x)^2+(y-p2y)^2<r2^2
Sistema di queste due disequazioni e ad ogni frame verifichi se i due oggetti si compenetrano in tal caso ti comporti di conseguenza.
aaa
07/09/14 17:02
pierotofy
Di che figure stiamo parlando?
Il mio blog: piero.dev
07/09/14 23:54
pbe
Postato originariamente da pierotofy:
Di che figure stiamo parlando?

Nel mio caso cerchi, comunque la domanda è più che altro come fare per esempio a non fare sovrapporre due cerchi in movimento quando sì incontrano. Bisogna solo fare calcoli sulle distanze delle figure o ci sarebbe qualche funzione o libreria per facilitare il tutto?
aaa
08/09/14 0:20
pierotofy
Probabilmente esiste qualche libreria (hai provato a cercare su Google)?

Dipende poi decidere se usare una libreria esterna e' overkill per un task semplice come gestire la collisione tra due cerchi. La soluzione proposta da Roby94 e' piuttosto semplice da implementare.
Il mio blog: piero.dev
08/09/14 22:11
pbe
Ok, ma per esempio per fare che se un cerchio collide con un altro lo sposta nella direzione della spinta?
aaa
08/09/14 22:35
Roby94
Prima di continuare, come è impostata il tuo sistema di gestione degli oggetti?
Per farti un esempio io quando lavoravo su processing ogni oggetto lo definivo come una classe che comprendeva:
X -> posizione sull'asse X [\u]
Y -> posizione sull'asse Y [\u]
Xspeed -> velocità di movimento sull'asse X [\u/s]
Yspeed -> velocità di movimento sull'asse Y [\u/s]
Xacceleration -> accelerazione sull'asse X [\u/s]
Yacceleration -> accelerazione sull'asse Y [\u/s]
DecelerationFriction -> decelerazione data dall'attrito del corpo [\u/s]
Le accelerazioni come potrai notare sono in unita di misura fittizia, è l'aumento di velocità al secondo a parer mio semplifica il sistema in alcuni casi rispetto al u/s^2
Ultima modifica effettuata da Roby94 08/09/14 22:36
aaa
08/09/14 23:08
pierotofy
Oppure usa questo: github.com/shiffman/…
Il mio blog: piero.dev