image Questa mattina ho notato che sono state aggiunte delle nuove applicazioni Silverlight 2 alla gallery. Una di queste ha attirato la mia curiosità e mi ha riportato indietro ai tempi in cui studiavo Fisica; ammetto: una delle materie che mi ha sempre incuriosito di più per il fascino, l’eleganza e a volte la complessità di certe formule matematiche e, in particolare, di come queste permettano di descrivere, capire e a volte governare i fenomeni fisici.

Bene, questa applicazione implementa un piccolo motore di fisica per il comportamento di particelle che vengono “sparate” con una velocità iniziale ed il cui moto è soggetto ad una accelerazione.

Potete vedere l’applicazione a questo link e scaricarne il codice sorgente; grazie a degli slider siete in grado di modificare il numero di particelle coinvolte, l’angolo di gittata per il moto parabolico, la forza di gravità e la velocità iniziale.

Se siete interessati a capire come è stata realizzata, vi consiglio di leggere i post “Trivial Physics Simulations (...in Silverlight)” dell’autore che partendo dalla nota formula della cinematica, descrive come ha implementato in C# il semplice, ma comunque interessante, motore: descrivendo la classe vettore che ha realizzato per rappresentare velocità e accelerazione e la classe particella che modella un oggetto nel modo dell’applicazione governato dalla semplice fisica che si vuole implementare. Il cuore è un metodo della classe della particella che viene chiamato per ogni frame. La particella ha anche un’età, che ne descrive la vita fino alla sua morte, rappresentata da una progressiva diminuzione dell’opacità. Nell’ultima parte descrive il “game-loop” e le funzioni che vengono richiamate, come vengono generate, come viene fatto il rendering e la rimozione delle particelle più vecchie. Di fatto l’applicazione può essere vista nella sua intimità come un piccolo videogioco e le righe di codice che servono per farlo sono veramente poche.

Ok, anche se non siete espertissimi di fisica l’applicazione ha un effetto interessante, gradevole e spero sia di vostro gradimento. Ho provato l’applicazione oltre che su IE 7, IE 8 beta1 anche su Firefox 3 ed il comportamento è il medesimo.

-Pietro