my.ASPItalia.com
ASP.NET
|
HTML5
|
LINQ e Entity Framework
|
Silverlight
|
Windows Phone
|
.NET Framework
|
Windows 8
|
Libro WP7
|
Libro HTML5
|
Corso HTML5
Iscriviti
Login
Newsletter
Home
Articoli
Script
Notizie
FORUM
Blogs
Media
Tutorials
Corsi
Libri
Eventi
Tags
Tutti i forum
Ricerca
FAQ
Fai una domanda
Collisione fra sfere per biliardo.
in
.NET Framework
>
Silverlight
Ultimo messaggio
ancio
il 28 giugno 2009 alle 17:34
393 messaggi
dal 08 maggio 2003
www.rsv-service.com
Salve a tutti,
sto seguendo un tutorial per le collisioni su un ipotetico gioco di biliardo in silverlight.
La routine che controlla le collisioni e quindi gli effetti degli urti però ha una parte che non riesco proprio a capire.
La sub controlla una palla e un altra palla e si trova all interno della classe della palla stessa. Quindi controlla la collisione tra la palla appartenente alla stessa classe ( this ) e l' altra palla passata sempre come oggetto/classe "Palla" nel parametro b.
Le variabili _x e _y sono le coordinate x e y delle palle.
Le variabili _vx e _vy non sono altro che le coordinate x e y del vettore di direzione quindi descrivono il movimento della palla ( sono generati dal coseno e seno dell angolo ).
Detto ciò la sub è la seguente:
public bool DoCollide(Ball b)
2: {
3: // calculate some vectors
4: double dx = this._x - b._x;
5: double dy = this._y - b._y;
6: double distance2 = dx * dx + dy * dy;
9:
10: if (Math.Abs(dx) > this._d || Math.Abs(dy) > this._d)
11: return false;
12: if (distance2 > this._d2)
13: return false;
OK FIN QUI HO CAPITO; HO CALCOLATO SE LE DISTANZE SONO TALI DA GENERARE UNA COLLISIONE. SIA LE DISTANZE TRA LE COORDINATE CHE L EFFETTIVA DISTANZA TRA I DUE CENTRI DELLE SFERE.
LA PARTE OSCURA E' LA SEGUENTE:
13: double dvx = this._vx - b._vx;
14: double dvy = this._vy - b._vy;
15: // make absolutely elastic collision
16: double mag = dvx * dx + dvy * dy;
17:
18: // test that balls move towards each other
19: if (mag > 0)
20: return false;
21:
22: mag /= distance2;
23:
24: double delta_vx = dx * mag;
25: double delta_vy = dy * mag;
26:
27: this._vx -= delta_vx;
28: this._vy -= delta_vy;
29:
30: b._vx += delta_vx;
31: b._vy += delta_vy;
32:
33: return true;
34: }
non capisco le formule che ha applicato e perchè... so solo che funziona!! Ma non mi basta che funzioni voglio capire il perchè... qualcuno ha qualche idea??
Per il tutorial completo vi rimando qui:
http://blogs.msdn.com/coding4fun/archive/2007/09/19/5002772.aspx
grazie a tutti coloro che mi aiuteranno.
Modificato da ancio
il 28 giugno 2009 17.35 -
Modificato da ancio
il 28 giugno 2009 17.39 -
Rispondi
Quoting
Salto rapido
Ultimi messaggi
Tutti i forum
Ricerca
Utenti online
ASP.NET
ASP.NET 2.0
ASP.NET 3.5
ASP.NET 4.0
.NET Framework
Silverlight
Windows Phone
Windows Presentation Foundation e WinForms
Windows Communication e Workflow
ASP - avanzato
ASP - base
SQL Server e MySQL
E-commerce
Hosting
Altri linguaggi e tecnologie
Windows Server, IIS & Security
Libri
OT
Commenti: blogs e notizie
Eventi
Torna al forum
| Feed
RSS
ASPItalia.com non è responsabile per il contenuto dei messaggi presenti su questo servizio, non avendo nessun controllo sui messaggi postati nei propri forum, che rappresentano l'espressione del pensiero degli autori.
Community
Effettua il login!
Hai dimenticato la password?
Ultimi messaggi
visualizzazione immagini e video da server
(3)
Redirect della pagina html precedente
(2)
Multi binding in Silverlight
(3)
Anomalo comportamento proprietà IsLoading del contesto.
UTENTI ONLINE
In primo piano
Annunciate le versioni ufficiali di Visual Studio 11
Rilasciato Visual Studio 11 Beta: scopri tutte le novità!
Windows 8 Consumer Preview: segui con noi la diretta
I più letti di oggi
Le novità di ASP.NET 4.5 (Community Days 2012)
Introduzione ad Entity Framework
Web Camp - ASP.NET MVC 3 (Community Days 2012)
Forzare il binding di una casella di testo al tap sull'appbar di Windows Phone 7
Tutorial Windows Phone 7
Sviluppare applicazioni per Windows Phone
Forzare la chiusura dell'applicazione in Windows Phone 7
Evitare submit doppi della web form
Gestire l'input di date tramite il controllo DatePicker di jQuery UI
Media
Sviluppare applicazioni web mobile con HTML5 e jQuery mobile
Metro Style App per Windows 8 con HTML e Javascript
Tutti i media
In evidenza
Dal 29 febbraio arriva WinRTItalia.com: tutto sullo sviluppo per Windows 8 e Metro
Aprire una popup in Silverlight
Sviluppare applicazioni web mobile con HTML5 e jQuery mobile
Disegnare un'applicazione a servizi con Entity Framework e WCF
Il nuovo tag time in HTML5
Salvare e leggere rapidamente le impostazioni di un'applicazione Windows Phone
Metro Style App per Windows 8 con HTML e Javascript
Aggiungere un handler globale per le chiamate AJAX di ASP.NET MVC
MISC
I nostri autori
Collabora con noi!
Media Kit - Pubblicità sul nostro network