Come stanno facendo in Windows Phone inizio a scrivere le formule dell' urto elastico in Objective-C, trattandosi di formule la differenza col C# non sarà troppa.
+ (void) ElasticCollision_Velocity1:(double) v1 Velocity2:(double) v2
Mass1:(double) m1 Mass2:(double) m2 finalVelocity1:(double*) out1 FinalVelocity2:(double*) out2
{
*out1 = (v1 * (m1 - m2) + 2 * m2 * v2) / (m1 + m2);
*out2 = (v2 * (m2 - m1) + 2 * m1 * v1) / (m2 + m1);
}
Questa è la formula da usare nel caso monodimensionale. Sarà comunque da usare anche nel caso bidimensionale ma applicandola alle componenti della velocità proiettate sull' asse che congiunge i centri.
Se la si osserva si nota che nel caso in cui le masse sono uguali si ha una notevole semplificazione:
*out1 = v2;
*out2 = v1;
Ovvero in un urto elastico monodimensionale tra masse uguali le velocità si scambiano. È quello che si osserva quando una palla in movimento colpisce una ferma, quella in movimento si ferma e l' altra si mette in movimento alla stessa velocità (le velocità si sono scambiate). Lo stesso vale se entrambe si muovono l' una contro l' altra, ripartiranno in direzioni apposte con le velocità scambiate.