Scusate, dimenticavo questo è parte del codice e credo che l'array vada messo da qualk parte qui:
import java.awt.event.*;
import java.awt.*;
import java.awt.geom.*;
import java.util.*;
import javax.swing.*;
public class PannelloCaduta extends JPanel
{
private Rectangle piano;
private Rectangle suolo;
private Ellipse2D pallina;
private Point2D.Double puntoPartenza;
private Vector punti;
private int statoAnim=-1;
public void paintComponent(Graphics g)
{
super.paintComponent(g);
Graphics2D g2 = (Graphics2D)g;
suolo = CadutaFrame.suolo;
g2.setColor(Color.black);
g2.fill(suolo);
if (piano==null) {
piano = CadutaFrame.pianoAppoggio;
g2.setColor(Color.blue);
g2.fill(piano);
pallina = CadutaFrame.pallina;
g2.setColor (Color.red);
g2.fill(pallina);
} else {
Double altPiano= new Double(puntoPartenza.getY());
int altPianoInt = altPiano.intValue()+18;
piano.setBounds(0,altPianoInt,100,15);
g2.setColor (Color.blue);
g2.fill(piano);
if (statoAnim==-1) {
pallina.setFrame(puntoPartenza.getX(),puntoPartenza.getY(),18.0,18.0);
g2.setColor (Color.red);
g2.fill(pallina);
} else {
Point2D.Double puntoPallina = (Point2D.Double) punti.get(statoAnim+1);
pallina.setFrame(puntoPallina.getX(),puntoPallina.getY(),18.0,18.0);
g2.setColor (Color.red);
g2.fill(pallina);
}
statoAnim++;
}
}
public void resetAnimazione() {
this.statoAnim=-1;
suolo = null;
piano = null;
pallina = null;
}
public int getStatoAnimazione() {
return this.statoAnim;
}
public Point2D.Double getUltimoPunto() {
return (Point2D.Double) punti.get(punti.size()-1);
}
public int nuovaTraiettoria(int vx, int h, int xp) {
double dx=0;
double xi=0;
double yi=0;
int yp=(675 - h) - 18;
int incremento = 2;
punti= new Vector();
final double grav = 9.8;
puntoPartenza = new Point2D.Double(xp,yp);
double Vi2 = Math.pow(vx,2);
double xi_prec=xi;
while (yi<=657)
{
dx = ((xi-(xp+18))+ incremento);
if (dx<0)
dx=0;
double dx2 = Math.pow(dx,2);
xi= (xp+18) + dx;
yi =(h - ((0.5*grav*dx2)/(Vi2)));
yi = (675 - yi - 18);
if (yi>657)
yi=657.001;
if ((vx<=10)||((Math.abs(xi-xi_prec)>=4.5)||(yi==657.001))) {
Point2D.Double punto = new Point2D.Double(xi,yi);
punti.add(punto);
xi_prec=xi;
}
}
return punti.size();
}
}