Oppure

Loading
17/10/05 16:19
hedo
Ragazzi vi do qualche dritta su come calcolare il rimbalzo della pallina:

come sapete lo schermo non ? altro che un grosso piano cartesiano che ha l'origine nell'angolo in alto a sinistra. Dato che all'aumentare delle x ci spostiamo verso destra e all'aumentare delle y ci spostiamo verso il basso, dobbiamo invertire il segno delle y in quanto siamo sempre stati abituati ad associare l'incremento delle y all'incremento della quota del punto. Nessuno ci vieta di lasciare le cose come stanno, ma vi consiglio ardentemente di adottare questo metodo in quanto pi? vicino alle "umane-menti", inoltre va fissato il centro nel centro efffettivo dello schermo, quindi a MaxX / 2 e a MaxY / 2.
Tutte le coordinate vanno sommate alle coordinate del centro, in modo da avere un rifermento cartesiano opportuno con cui ? molto pi? facile lavorare (in quanto il centro ? il CENTRO :-))

Ora veniamo a un po di analitica:

una generica retta del piano ha come modello generale:

ax + by + c = 0

il che pu? essere semplificato in:

y = mx + q

ma cosa ci perdiamo cos??
Semplice, i timbalzi orizzontali e verticali ovvero le rette che appartengono ai fasci x = k e y = h, ma ce

ne possiamo disinteressare perch? non vogliamo mica che la pallina continui a rimbalzare in orizzontale e in verticale all'infinito no? e visto che non abbiamo superfici inclinate di rimbalzo non ha senso contemplare questi casi limite. Cosa succede a un oggetto quando rimbalza su una superficie in un sistema non accelerato ma di moto rettilineo uniforme senza campo gravitazionale? semplice: la retta 'rimbalzata' (se cos? si pu? dire) ? la simmetrica rispetto alla retta perpendicolare alla superficie di impatto. Vediamo i due casi:

y = mx + q

superficie di impatto: x = k

sappiamo che la simmetria di retta x = k corrisponde a questo sistema:

| x' = -x + 2k
| y' = y

la retta associata quindi ?:

y = m * ( -x + 2k ) + q

ora facciamo lo stesso per la simmetria di asse y = h:

| x' = x
| y' = -y + 2h

troviamo anche questa retta associata:

y = -mx + -q + 2h

queste sono le rette associate, ma ci siamo dimenticati che le rette rimbalzate sono le simmetriche rispetto alle perpendicolari! Niente paura... tutto lavoro inutile? assolutamente no ;-)
Detto P il punto di impatto, calcoliamo le sue coordinate che non sono altro che l'intersezione tra la superficie di impatto e la retta che rappresenta la direzione (anche qui abbiamo 2 casi):

per le superfici parallele a y = 0,

| y = mx + q
| y = h

| mx + q - h = 0
| y = h

| x = ( h - q ) / m
| y = h

P ( ( h - q ) / m , h )

vediamo per le superfici appartenenti al fascio x = k,

| y = mx + q
| x = k

| y = mk + q
| x = k

P ( k , mk + q )

fin qui tutto semplice, dobbiamo ora trovare la perpendicolare alla superficie passante per P:

per y = h, e P ( ( h - q ) / m , h ) la perpendicolare ha equazione:

x = ( h - q ) / m

per x = k, e P ( k , mk + q ) la perpendicolare ha equazione:

y = mk + q

troviamo adesso la simmetrica della direzione secondo queste rette:

direzione generica nel piano: y = mx + q

se il priano ? orizzontale: y = m * ( -x + 2 * ( ( h - q) / m ) ) + q
con opportune semplificazioni: y = -mx + 2h - q

e

se il piano ? verticale: y = -mx -q + 2 * ( mk + q)
con opportune semplificazioni: y = -mx + q + 2mk

et voil?: PROVARE PER CREDERE!
La matematica ci viene sempre in contro! La prima equazione ? per i piani orizzontali, la seconda per i piani verticali... volendo si potrebbero complicare le cose contemplando anche gli urti su rette oblique, ma sconfineremmo nella goniometria, per ora vi basta questo ;-)

Ora mi chiedo solo... chi aveva fatto questa analisi prima anche solo di pensare "Facciamo Arkanoid!" ? Non ? detto che i giochi semplici siano semplici da realizzare, anche perch?, che questo sia da esempio, la matematica ? tutto, senza di essa ci si attacca alla canna del gas (come dice la mia prof di inglese ;-))

Ciao!

HeDo
Ultima modifica effettuata da hedo 17/10/05 17:58
aaa
17/10/05 16:35
nikipe_silver
mmmm, ottimo , ma hai provato a vedere cio' che ho fatto io nel progetto
se sei sicuro di fare meglio ti invito vivamente ascrivere giu il codice
aaa
17/10/05 17:45
hedo
Non ? mio il progetto... questa ? solo una dritta ;-)
Queste formule permettono alla pallina di assumere tutte le direzioni non solo quelle parallele alle rette y = x e y = -x, non ho visto il code, ma mi puoi assicurare che il rimbalzo venga calcolato in questo modo?
aaa
18/10/05 16:13
nikipe_silver
per ora ho calcolato la rotta aggiungendo a e b (due velocita') risperttivamente a x e y; in caso di contatto con qualche superficie a o b viene moltiplicvato per -1...
penso che possa andare.....
aaa
18/10/05 17:04
hedo
AHHHHH,

Ti consiglio di usare le rette, con le loro belle equazioni!!! Leggi attentamente il mio post, e segui i passaggi che ho fatto, ti porteranno alla soluzione!
aaa