Moin
Also ich hab ein bisserl Probleme mit dem Math-Paket. Ich würd gern in einem Koordinatensystem mit einer
definierten Schrittweite von einem Punkt a zu einem Punkt b wandern. Und weil das ganze ja prinzipiell nur
ein wenig Dreiecksberechnung sein sollte dacht ich mir das ganze so:
Soweit der Plan, und es klappt nicht. Klar, debugger an und los, aber ich komme grad mal bis double tangens, da
setzt mein Verständniss schon aus. Beispiel: ich starte bei 0 0, und will nach 100 100, dann ist das eindeutig ein 45
Grad Winkel. Wieso ist tangens dann 1.5... ?? Ich nehm an ich hab einfach die Formel falsch umgesetzt?
Danke schonmal
Also ich hab ein bisserl Probleme mit dem Math-Paket. Ich würd gern in einem Koordinatensystem mit einer
definierten Schrittweite von einem Punkt a zu einem Punkt b wandern. Und weil das ganze ja prinzipiell nur
ein wenig Dreiecksberechnung sein sollte dacht ich mir das ganze so:
Code:
package de;
import java.awt.GridLayout;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import javax.swing.JButton;
import javax.swing.JFrame;
import javax.swing.JTextField;
public class Runner extends JFrame {
public static void main(String[] args) {
new Runner().setVisible(true);
}
public Runner() {
super();
setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
setLocation(50, 50);
setSize(200, 90);
setLayout(new GridLayout(3,1));
final JTextField zielx=new JTextField();
add(zielx);
final JTextField ziely=new JTextField();
add(ziely);
JButton start=new JButton("leg los");
start.addActionListener(new ActionListener(){
public void actionPerformed(ActionEvent arg0) {
berechne(Double.parseDouble(zielx.getText()), Double.parseDouble(ziely.getText()));
}
});
add(start);
}
public void berechne(double zielx, double ziely){
System.out.println("Ziel ist "+zielx+" , "+ziely);
double schrittweite=10; //Wie weit kann ich pro Schritt gehen
double aktx=0, akty=0; //Aktuelle Position, als Start wird 0 vorausgesetzt
while (true){
double hypotenuse=Math.sqrt((aktx-zielx)*(aktx-zielx)+(akty-ziely)*(akty-ziely));
//Ist die Schrittweite kleiner als der noch zu gehende weg?
if(schrittweite<hypotenuse){
//Winkel berechnen
double tangens=Math.tan((ziely-akty)/(zielx-aktx));
//Mit Schrittweite und Winkel neue Positionen berechnen
aktx=schrittweite*Math.sin(tangens);
akty=schrittweite*Math.cos(tangens);
System.out.println(" Schritt "+aktx+" , "+akty);
continue;
}
System.out.println("Ankunft an "+zielx+" , "+ziely);
break;
}
}
}
Soweit der Plan, und es klappt nicht. Klar, debugger an und los, aber ich komme grad mal bis double tangens, da
setzt mein Verständniss schon aus. Beispiel: ich starte bei 0 0, und will nach 100 100, dann ist das eindeutig ein 45
Grad Winkel. Wieso ist tangens dann 1.5... ?? Ich nehm an ich hab einfach die Formel falsch umgesetzt?
Danke schonmal