Originariamente inviato da bako
la formula che funiona e' questa:

codice:
double r = Math.sqrt(fl.x * fl.x + fl.y * fl.y);
gx = -gravityStrength * fl.x / r;
gy = -gravityStrength * fl.y / r;
e' corretta "fisicamente" parlando?
Sì.
se dovessi applicare la stessa forza ma in un punto A.
devo fare A-fl? o viceversa?

tipo:
codice:
double r = Math.sqrt(fl.x * fl.x + fl.y * fl.y);
gx = -gravityStrength * fl.x-A.x / r;
gy = -gravityStrength * fl.y-A.y / r;
se si/se no, perche'?
No. Devi sostituire a fl.x => fl.x-A.x ed a fl.y => fl.y-A.y

Quindi:

codice:
double r = Math.sqrt((fl.x-A.x) * (fl.x-A.x) + (fl.y-A.y) * (fl.y-A.y));
gx = -gravityStrength * (fl.x-A.x) / r; /* Occhio alle parentesi!!! */
gy = -gravityStrength * (fl.y-A.y) / r; /* Come sopra */

se io ho un vettore in 2d che ha centro (x,y) forza(x,y) velocita(x,y).
Ciò è oscuro come il didietro di Darth Vader. Ma il resto ha senso, dai