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 il 17/10/2005 alle 19:58 |