Da poco mi sono buttato in java 
lasciate perdere la qualità del layout.
Il programma, data velocità e angolo di partenza dovrebbe calcolare 100 punti della traiettoria parabolica e memorizzarne x e y in dati[][]
calcolo il tempo totale, divido per cento, calcolo x e ok, ma la seconda parte delle y, quella da -1*(1/2*...
risulta 0 (ho aggiunto le istruzioni per stampare la matrice sulla schermata di netbeans, proprio per vedere che valori dava...)
ConvertFrame.java
codice:
/*
* To change this template, choose Tools | Templates
* and open the template in the editor.
*/
package convertitore;
import java.awt.*;
import java.awt.event.*;
import java.math.*;
class ConvertFrame extends Frame implements ActionListener
{
private Panel p1 = new Panel();
private Panel p2 = new Panel();
private Panel p3 = new Panel();
private Panel p4 = new Panel();
private TextField velocita = new TextField(15);
private TextField gradi = new TextField(15);
private TextField ris = new TextField(15);
private Button calcola = new Button("Calcola");
public ConvertFrame()
{
super("Calcolo traiettoria proiettile");
//addWindowListener(new GestoreFinestra());
p1.add(new Label("Velocità"));
p1.add(velocita);
p2.add(new Label("Gradi"));
p2.add(gradi);
p4.add(ris);
p3.add(calcola);
setLayout(null);
Disegna disegno = new Disegna();
add(disegno);
add(p1);
add(p2);
add(p4);
add(p3);
disegno.setBounds(30, 40, 501, 501);
p1.setBounds(30, 540, 250, 70);
p2.setBounds(30, 610, 250, 70);
p4.setBounds(30, 680, 250, 70);
p3.setBounds(30, 750, 250, 50);
calcola.addActionListener(this);
}
@Override
public void actionPerformed(ActionEvent e)
{
double vel;
double grad;
double rad;
vel = Double.valueOf(velocita.getText()).doubleValue();
grad = Double.valueOf(gradi.getText()).doubleValue();
rad = Math.toRadians(grad);
double dati[][] = new double[3][105];
int i;
double t_tot;
t_tot = ((2*vel/9.81)*Math.sin(rad));
double scatto;
double netto;
scatto = t_tot/100;
for (i=1; i <= 100; i++)
{
netto= scatto*i;
dati[0][i]=i;
dati[1][i]=vel*Math.cos(rad)*netto;
dati[2][i]=((vel*Math.sin(rad)*netto)+-1*(1/2*9.81*netto*netto));
System.out.println(dati[0][i]+" : "+netto+" : "+dati[1][i]+" : "+dati[2][i]);
System.out.println(vel+" : "+Math.sin(rad)+" : "+netto+" : "+-1*(1/2*9.81*netto*netto));
}
ris.setText("Fatto!");
}
}
Convertitore.java
codice:
/*
* To change this template, choose Tools | Templates
* and open the template in the editor.
*/
package convertitore;
/**
*
* @author Giovanni
*/
public class Convertitore {
/**
* @param args the command line arguments
*/
public static void main(String[] args) {
ConvertFrame f = new ConvertFrame();
f.pack();
f.setVisible(true);
}
}
Disegna.java (da completare ovviamente, dovrebbe fare il grafico)
codice:
/*
* To change this template, choose Tools | Templates
* and open the template in the editor.
*/
package convertitore;
import java.awt.*;
public class Disegna extends Canvas
{
public void paint(Graphics g)
{
g.drawLine(100, 100, 300, 400);
g.drawLine(0,0,0,500);
g.drawLine(0,500,500,500);
g.drawLine(500,500,500,0);
g.drawLine(500,0,0,0);
}
}
Grazie delle risposte in anticipo