Oppure

Loading
08/06/10 20:23
walker93
scusami ma proprio non mi è chiaro...
come fanno accelerazione e velocità a essere di tipo point???
e se i valori di a e di timer1.interval non cambiano:
v viene incrementata sempre dello stesso valore...(Es. 2 poi 4,6,8,10,12,14,16)
la velocità non dovrebbe incrementare...
aaa
09/06/10 16:05
walker93
ci sono riuscito...
sbagliavo approccio...
le formule che usavo andavano bene, ma facevo il calcolo della distanza ogni volta che succedeva qualcosa, come il superamento del bordo.
ci ho pensato è ho capito che ad ogni tick del timer avrei dovuto calcolare la distanza cosi mi è bastato sommare ad ogni tick la nuova posizione del proiettile meno quella vecchia per ottenere la distanza percorsa in quell'istante di tempo...

grazie a tutti comunque...
aaa
10/06/10 20:29
walker93
adesso il problema è ahimè un altro...

adesso devo rappresentare graficamente la giusta distanza...
cioè se sparo a 10 m/s a 45° mi muovo di 10m
ma io di quanti pixel devo spostare il proiettile effettivamente per far sembrare reale lo spostamento??
io do anche la possibilità di modificare il punto di partenza: se metto 10 m sull'asse x
anziche zero mi si sposta di un tot (100 px adesso faccio 10*10m)
ma se come prima sparo a 10 m/s a 45° e mi muovo di 10 m
la posizione finale del proiettile sarà diversa da aver compiuto lo spostamento inserendo 10 m nello spazio per modificare la distanza iniziale

visto che i pixel sono un unità dimisura relativa,non c'è una formula che converte metri in pixel, non so come fare...
aaa
12/06/10 16:30
Il Totem
Postato originariamente da walker93:

scusami ma proprio non mi è chiaro...
come fanno accelerazione e velocità a essere di tipo point???
e se i valori di a e di timer1.interval non cambiano:
v viene incrementata sempre dello stesso valore...(Es. 2 poi 4,6,8,10,12,14,16)
la velocità non dovrebbe incrementare...


In assenza del tipo vettore, è possibile usare un Point per memorizzare le due componenti di velocità e accelerazione (perchè queste, ovviamente, in un problema a due dimensioni, sono vettori). E, se non sbaglio, la costante di accelerazione gravitazionale è, in un intorno ristretto della superficie terrestre, approssimativamente costante; perciò non c'è motivo di sorprendersi del fatto che la velocità sia aumentata di un fattore costante.
Se pensi alla definizione di accelerazione (istantanea):
a = dv / dt
E ricavi dv, quindi integri fra due estremi dati, ricavi:
DV = a * Dt (D = delta)
E hai che la variazione di velocità è proporzionale all'accelerazione e al periodo di tempo considerato (Timer1.Interval).


Lo spostamento orizzontale dovresti già averlo se hai usato formule simili a quelle che ti ho mostrato, in quando p.X, alla fine, contiene lo spostamento finale sulle ascisse.
aaa
14/06/10 15:24
walker93
Postato originariamente da Il Totem:

'a > accelerazione, di tipo Point
'v > velocità, di tipo Point
'p > posizione, di tipo point

'non è definito l'operatore * tra point e double, ma assumiamo
'per semplicità che esista
v += a * Timer1.Interval / 1000
p += v * Timer1.Interval / 1000

p.X = p.X Mod sfondo.Width
If p.X < 0 Then
   p.X = sfondo.Width - p.X
End If

If p.y > sfondo.Height Then
   Timer1.Stop()
   p.y = sfondo.Height
End If



adesso questo mi è chiaro ...

ma non riesco comunque a visualizzare correttamente il giusto spostamento quando inserisco una posizione diversa dallo 0.
come ho già detto se mi sposto di 10 m simulando lo sparo(partendo da 0) la posizione finale del proiettile è diversa dalla posizione che ottengo spostandomi di 0 m (partendo da 10 m)
aaa
15/06/10 13:40
Il Totem
Postato originariamente da walker93:
ma non riesco comunque a visualizzare correttamente il giusto spostamento quando inserisco una posizione diversa dallo 0.
come ho già detto se mi sposto di 10 m simulando lo sparo(partendo da 0) la posizione finale del proiettile è diversa dalla posizione che ottengo spostandomi di 0 m (partendo da 10 m)


Quindi 10+0=/=0+10 ? Pensavo che l'addizione godesse della proprietà commutativa.
Il nuovo codice qual è?
aaa
15/06/10 13:50
walker93
non è esattamente 0+10=/=10+0

nel primo caso SIMULO lo spostamento con il codice nel timer e mi sposto di 10m (secondo una formula di wikipedia)e ad esempio di 200px (200px è inventato)

nel secondo NON faccio la simulazione ma CAMBIO la mia posizione iniziale tramite textbox inserendo 10m ma non mi si sposta di 200 px come invece dovrebbe essere...
aaa
16/06/10 17:58
Il Totem
Ho capito quello che succede, ma se continui a dirmelo a parole io non so fare altro che dirti che hai sbagliato qualcosa. Finché non vedo il nuovo codice, non posso indicarti dove hai sbagliato. Al massimo posso dirti che la tua formula non è abbastanza generale, dato che il primo è un caso particolare del secondo (quindi dovresti impegnarti a far funzionare il secondo caso, cosicché il primo si risolva da sé;).
aaa