Newsgroup: it.scienza.fisica
Titolo: modellare urti biliardo

salve avrei diverse domande
vorrei scrivere un programma che modella e simula graficamente al
computer gli urti delle molecole di un gas
il problema è simile a quello delle biglie del biliardo
Nel caso bidimensionale bisogna rappresentare il cammino di n sfere su
un piano poligonale che si urtano fra loro e urtano i bordi in
ipotesi di assenza di attrito e urti elastici
Visual Basic e C, sono i linguaggi che conosco
c'è qualcuno che ha realizzato un programma simile e mi puo fornire un
elenco di link di risorse in rete, teoria, spiegazioni, codici
sorgenti, trik trak, ecc ?
io ho cercato ma evidentemente non sono molto bravo perchè non ho
trovato niente
uno dei problemi in cui mi sono imbattuto è questo:
la sferaA e la sferaB dotate di stessa massa e dimensioni (diametro d)
si urtano
il loro moto è descritto dai vettori (AX AY)(VaX VaY) (BX BY)(VbX VbY)
per semplificare VaY = 0 e VaX > 0 ossia A procede in direzione
dell'asse X nel verso positivo
nell'istante t1 si scontra con B
diciamo che la retta che interseca il centro delle due biglie forma con
gli assi un  angolo compreso tra zero e pigreco/2 ossia la b si
trova nel quadrante I
ovviamente i due punti distano d
il vettore (VbX VbY) puo assumere qualsiasi combinazione di valori
positivi o negativi
domanda: quali saranno i nuovi vettori (VaX VaY) (VbX VbY) dopo l'urto
in ipotesi di urti perfettamente elastici?
E in 3D?
:mavah:
per favore rispondete
mi sento come una particella di sodio
ciao
 bisius

 gli assi un  angolo compreso tra zero e pigreco/2 ossia la b si
...
La biglia A procederà con un angolo "speculare" rispetto al prolungamento 
del raggio di B nel punto di incidenza. La biglia B si muoverà lungo la 
direzione del suddetto raggio. La velocità delle due biglie... non la so 
calcolare con i vettori, ma la calcolerei basandomi sugli angoli. Siccome 
quando l'angolo di incidenza è 0°, la biglia A si ferma e la B prosegue con 
la velocità di A (nelle ipotesi che hai citato, ovviamente, e considerando 
ferma la biglia B) e che, quando l'angolo è 90° la A prosegue e la B resta 
ferma... azzarderei l'ipotesi che le biglie proseguano con le velocità:
V'a = Va * cos(angolo)
V'b = Va * sin(angolo)
...ma si tratta, per l'appunto, solo di un azzardo ;)))
Stefano 

 ...ma si tratta, per l'appunto, solo di un azzardo ;)))
Mmmm, hai azzardato bene (quasi, perche' gli indici a e b sono
scambiati ;-)
Ciao
-- 
Giorgio Bibbiani

 elenco di link di risorse in rete, teoria, spiegazioni, codici
Purtroppo, non posso essere più preciso sui linguaggi, ma mi permetto
di darti qualche consiglio dettato dall'esperienza.
Se vuoi fare un buon programma, non devi pensare solo al qui ed adesso,
ma anche un po' più in la nel tempo ed eventualmente anche ad altri
possibili utilizzatori. Soprattutto se l'investimento impiegato per
scrivere il programma è grande, conviene mettersi a tavolino e
studiare bene il progetto su un foglio (o più fogli) di carta, prima
di mettersi davanti allo schermo a scrivere il codice.
Inoltre, gestire un'interfaccia grafica è un lavoraccio. Se vuoi
concentrarti sul problema, scrivi un programma semplice che lo risolva,
utilizzando magari un input da file e che sputa i risultati su un file,
per esempio.
Questo ha il vantaggio che puoi utilizzare linguaggi standard come
l'ANSI C rimanendo completamente portabile (il VB non è neppure da
considerare sotto questo aspetto). E' un enorme facilitazione per chi
(come me) si trova a viaggiare tra due o tre sistemi operativi
differenti.
Inoltre, il file dei risultati puo' essere rappresentato graficamente
con un altro programma che magari fa solo quello, ma lo fa bene (che
so, Gnuplot, per esempio).
Se devi usare il programma per delle situazioni complicate, non è
detto che avere una bella finestrina e trascinare le palline con il
mouse sia la soluzione in assoluto migliore (senza contare di quanto
tempo prende il gestire da programma tutte le interazioni con
l'utente). Magari un file (che puoi eventualmente generare magari con
un qualche algoritmo se ti servono dei casi particolari) che descrive
il tutto in un sistema di coordinate apposito puo' essere la soluzione
migliore.
Scrivere un programma che mostra tante belle finestre è una cosa,
un'altra è farne uno che risolve un problema. Non è detto che la
prima implichi la seconda,  e vale la pena di pensare all'interfaccia
solo dopo aver risolto il problema fisico. Soprattutto se il programma
lo dovrai usare tu e magari pochi altri del tuo gruppo di ricerca, puoi
anche accontentarti di un'interfaccia minimalista, ma solida.

 ....ma si tratta, per l'appunto, solo di un azzardo ;)))
Ecco bravo: un azzardo.
Perche' non te lo vai a giocare a Montecarlo?
Io certa gente proprio non la capisco...
Dev'essere un mio linite intellettuale :-(
 
-- 
Elio Fabri

 Dev'essere un mio linite intellettuale :-(
...
Considero i newsgroup alla stregua di un hobby. Purtroppo non ho molto tempo 
da dedicarci e non ho neppure basi solide, in fisica. Mi piace però pensare 
e cercare le soluzioni a certi problemi così, di getto e di getto scriverle. 
Non è un metodo scientifico, lo so, si dovrebbe almeno mettercisi con calma, 
con carta e penna. Siccome non ho mai detto di essere il Fabri della 
situazione, chi legge ciò che scrivo sa di doverlo prendere con le pinze. 
Tutto ciò premesso, non vedo perché non dovrei dare le mie risposte, anche 
se parzialmente sbagliate, se io le ritengo corrette. Il lettore, 
soprattutto se studente o comunque giovane, deve imparare a considerare con 
senso critico ciò che trova scritto qui... sia da me che da Lei ;). Chi 
invece ne sa più di me, può semplicemente correggermi, con garbo ed 
educazione, come hanno fatto altri.
Mi dispiace per il suo limite, che non è certamente intellettuale ma bensì 
relazionale.
Stefano 

 scambiati ;-)
Ops... forse perché il nostro insegnate di topografia ci ha insegnato a 
misurare gli angoli con un riferimento opposto, rispetto a tutti gli altri 
settori? ;) Chissà perché a noi aspiranti geometri (sono passati più di 
vent'anni!) insegnavano certe cose al contrario?
Stefano

 (sono passati più di vent'anni!) insegnavano certe cose al contrario?
Premetto che, come specificato nel messaggio di Stefano Gemma,
avevo supposto che la velocita' iniziale della biglia B fosse nulla.
*Quanto segue vale solo nell'ipotesi che la biglia B sia inizialmente ferma,
e non e' la soluzione del problema di biagiopas.*
Non so, avevi scritto:
"Siccome quando l'angolo di incidenza è 0°, la biglia A si ferma e la B prosegue con
la velocità di A (nelle ipotesi che hai citato, ovviamente, e considerando
ferma la biglia B) e che, quando l'angolo è 90° la A prosegue e la B resta
ferma... azzarderei l'ipotesi che le biglie proseguano con le velocità:
V'a = Va * cos(angolo)
V'b = Va * sin(angolo)".
Se ad es. l'angolo di incidenza e' 0° e la biglia A si ferma, deve essere
Va' = 0 m/s, mentre dalla formula sopra risulta Va' = Va, allo
stesso modo se l'angolo di incidenza (cioe' l'angolo teta, 0° <= teta <= 90°
tra la direzione di incidenza e quella che congiunge i centri delle due sfere
all'istante dell'urto) e' 90° allora deve essere Va' = Va, mentre dalla
formula sopra risulta Va' = 0 m/s.
Le formule corrette si trovano cosi':
nell'ipotesi di urto elastico vale la conservazione della energia cinetica
totale associata al moto traslazionale delle due sfere (il moto delle due
sfere e' puramente traslazionale dato che si suppone di poter trascurare
gli attriti e si suppone che la velocita' angolare iniziale della sfera A
sia nulla), da cui:
(1)  Va^2 = Va'^2 + Vb'^2,
sempre per l'assenza di attrito la forza che agisce su B durante l'urto forma
un angolo teta con l'asse x, quindi anche la velocita' finale di B forma un
angolo teta con l'asse x, dalla conservazione della quantita' di moto totale
proiettata lungo gli assi x e y segue (e' noto che nelle ipotesi di masse uguali
e velocita' iniziale di B nulla l'angolo tra le velocita' finali di A e B vale 90°):
(2)  Va = Va' * sin(teta) + Vb' * cos(teta)
(3)  Va' * cos(teta) = Vb' * sin(teta).
Mettendo a sistema (1), (2) e (3) si trova la soluzione:
Va' = Va * sin(teta)
Vb' = Va * cos(teta).
Ciao
-- 
Giorgio Bibbiani

biglie non potevano arrivare n quella osizione...
credo invece che siano possibili entrambe le combinazioni
VbX > VaX 	->	es VbX = 0 , la B potrebbe provenire dall'alto , (verso
della velocità
tra 3/2pi e 2pi )
VbY > 0  	->	 se VaX molto maggiore di VbY
cmq da questo momento non è piu consentito sbagliare ;-)
effettivamente considerare il pdv 'polare' mi ha semplificato alcuni
passaggi
però non credo che nel caso caso delle due sfere in movimento le
direzioni post urto siano necessariamente ortogonali
es due sfere che procedono quasi parallele e si sfiorano
non so se il mio approccio sia ortodosso ma sto cercando le formule
graficamente considerando
l'urto come la combinazione di due urti : della A sulla B e della B
sulla A , come se entrambi
producessero due direzioni ortogonali e poi sommando i vettori
considerato che in questo modo la quantità di moto totale si dovrebbe
conservare mi sembra la
cosa piu logica, è così che funziona o sono fuori strada??
ciao
Biagiopas

 es due sfere che procedono quasi parallele e si sfiorano
Infatti, le velocita' delle due sfere dopo l'urto sono necessariamente
ortogonali se valgono le ipotesi che aveva fatto Stefano:
"(nelle ipotesi che hai citato, ovviamente, e considerando
ferma la biglia B) ",
cioe' masse uguali, urto elastico, sfera B inizialmente ferma
(in queste ipotesi l'urto si classifica come newtoniano).
Che in generale le velocita' dopo l'urto non siano ortogonali lo
vedi immediatamente dal fatto che se in un dato riferimento le
velocita' sono ortogonali, al cambiare del riferimento cambia in
generale l'angolo tra i vettori velocita'.
Ciao
-- 
Giorgio Bibbiani