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.javacodice:/* * 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!"); } }
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; /** * * @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); } }
Grazie delle risposte in anticipocodice:/* * 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); } }![]()



Rispondi quotando