Oppure

Loading
29/11/12 19:13
giosch
Da poco mi sono buttato in java :D
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
/*
 * 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
/*
 * 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)
/*
 * 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 :D
Ultima modifica effettuata da giosch 29/11/12 19:14
aaa