29/11/12 19:13
giosch
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
Convertitore.java
Disegna.java (da completare ovviamente, dovrebbe fare il grafico)
Grazie delle risposte in anticipo
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
Ultima modifica effettuata da giosch 29/11/12 19:14
aaa