Hallo zusammen,
ich habe ein Problem und bin mit meinem Latein am ende.
Zuerst ,ein vorhaben:
Ich schreibe ein kleines Weltraumballerspiel mit JOGL.
Da nicht jeder einen Joystick mit Throttle-Kontrolle hat und Tastaturen leider noch nicht standartmässig mit druckpunktsensoren ausgestattet sind ( wäre doch was schönes ) möchte ich gerne meine Raumflieger langsam anfliegen lassen.
Rein Theoretisch (Mathematisch) ganz einfach:
maxGeschwindigkeit des Fliegers: 130
Sin(0)*maxGeschwindigkeit= 0 = aktuelle Geschwindigkeit
Sin(1)*maxGeschwindigkeit= 2.26
Sin(2)*maxGeschwindigkeit= 4,53
Sin(3)*maxGeschwindigkeit= 6,80
...
Sin(90)*maxGeschwindigkeit= 130
Ich habe eine Testklasse geschrieben, die später auf Tastendruck die geschwindigkeit erhöt.
Leider funktioniert das nicht so wie ich mir das vorgestellt habe.
z.B. Musste ich grade feststellen, das JAVA anders mit Sinus umgeht als alle meine Taschenrechner.
Sin(1) ergibt in meinem Taschenrechner 0,01745...
Sin(1) in JAVA ergibt 0.8414...
Wie kommt dieser unterschied zu stande?
Ich habe es dennoch ans laufen bekommen indem ich statt der Ganzzahl 1 einen Double 0.1 übergebe.
Jedoch stehe ich jetzt vor einem weiterem problem:
Irgentwann sollte der Faktor, den ich mit Sinus ausrechne, 1 erreichen (1 = Maximale Geschwindigkeit). Denn 1 * 130 = 130.
Nur komme ich nicht auf 130 sondern nur auf 119.
Was mach ich denn falsch?
Ausgabe:
Beschleunigungsfaktor: 0.0 || Geschwindigkeit: 0
Beschleunigungsfaktor: 0.01 || Geschwindigkeit: 1
Beschleunigungsfaktor: 0.02 || Geschwindigkeit: 2
Beschleunigungsfaktor: 0.03 || Geschwindigkeit: 3
Beschleunigungsfaktor: 0.04 || Geschwindigkeit: 5
Beschleunigungsfaktor: 0.05 || Geschwindigkeit: 6
Beschleunigungsfaktor: 0.060000000000000005 || Geschwindigkeit: 7
Beschleunigungsfaktor: 0.07 || Geschwindigkeit: 9
Beschleunigungsfaktor: 0.08 || Geschwindigkeit: 10
Beschleunigungsfaktor: 0.09 || Geschwindigkeit: 11
Beschleunigungsfaktor: 0.09999999999999999 || Geschwindigkeit: 12
Beschleunigungsfaktor: 0.10999999999999999 || Geschwindigkeit: 14
Beschleunigungsfaktor: 0.11999999999999998 || Geschwindigkeit: 15
Beschleunigungsfaktor: 0.12999999999999998 || Geschwindigkeit: 16
Beschleunigungsfaktor: 0.13999999999999999 || Geschwindigkeit: 18
Beschleunigungsfaktor: 0.15 || Geschwindigkeit: 19
Beschleunigungsfaktor: 0.16 || Geschwindigkeit: 20
Beschleunigungsfaktor: 0.17 || Geschwindigkeit: 21
...
Beschleunigungsfaktor: 0.9100000000000006 || Geschwindigkeit: 102
Beschleunigungsfaktor: 0.9200000000000006 || Geschwindigkeit: 103
Beschleunigungsfaktor: 0.9300000000000006 || Geschwindigkeit: 104
Beschleunigungsfaktor: 0.9400000000000006 || Geschwindigkeit: 104
Beschleunigungsfaktor: 0.9500000000000006 || Geschwindigkeit: 105
Beschleunigungsfaktor: 0.9600000000000006 || Geschwindigkeit: 106
Beschleunigungsfaktor: 0.9700000000000006 || Geschwindigkeit: 107
Beschleunigungsfaktor: 0.9800000000000006 || Geschwindigkeit: 107
Beschleunigungsfaktor: 0.9900000000000007 || Geschwindigkeit: 108
Beschleunigungsfaktor: 1.0000000000000007 || Geschwindigkeit: 109
Danke für eure Hilfe
ich habe ein Problem und bin mit meinem Latein am ende.
Zuerst ,ein vorhaben:
Ich schreibe ein kleines Weltraumballerspiel mit JOGL.
Da nicht jeder einen Joystick mit Throttle-Kontrolle hat und Tastaturen leider noch nicht standartmässig mit druckpunktsensoren ausgestattet sind ( wäre doch was schönes ) möchte ich gerne meine Raumflieger langsam anfliegen lassen.
Rein Theoretisch (Mathematisch) ganz einfach:
maxGeschwindigkeit des Fliegers: 130
Sin(0)*maxGeschwindigkeit= 0 = aktuelle Geschwindigkeit
Sin(1)*maxGeschwindigkeit= 2.26
Sin(2)*maxGeschwindigkeit= 4,53
Sin(3)*maxGeschwindigkeit= 6,80
...
Sin(90)*maxGeschwindigkeit= 130
Ich habe eine Testklasse geschrieben, die später auf Tastendruck die geschwindigkeit erhöt.
Leider funktioniert das nicht so wie ich mir das vorgestellt habe.
z.B. Musste ich grade feststellen, das JAVA anders mit Sinus umgeht als alle meine Taschenrechner.
Sin(1) ergibt in meinem Taschenrechner 0,01745...
Sin(1) in JAVA ergibt 0.8414...
Wie kommt dieser unterschied zu stande?
Ich habe es dennoch ans laufen bekommen indem ich statt der Ganzzahl 1 einen Double 0.1 übergebe.
Jedoch stehe ich jetzt vor einem weiterem problem:
Irgentwann sollte der Faktor, den ich mit Sinus ausrechne, 1 erreichen (1 = Maximale Geschwindigkeit). Denn 1 * 130 = 130.
Nur komme ich nicht auf 130 sondern nur auf 119.
Was mach ich denn falsch?
Code:
public class NewMain {
private static final int maxSpeed = 130;
private static int speed = 0;
private static double enginePower = .0;
/**
* @param args the command line arguments
*/
public static void main(String[] args) {
// TODO code application logic here
t.start();
}
private static Thread t = new Thread(new Beschleunigen());
private static class Beschleunigen implements Runnable {
public void run() {
while(speed < maxSpeed && enginePower < 1.001){
speed = (int) (Math.sin(enginePower) * maxSpeed);
try {
Thread.sleep(25);
} catch (InterruptedException ex) {
Logger.getLogger(NewMain.class.getName()).log(Level.SEVERE, null, ex);
}
System.out.println("Beschleunigungsfaktor: "+enginePower+ " || Geschwindigkeit: " +speed);
enginePower+=.01;
}
}
}
}
Ausgabe:
Beschleunigungsfaktor: 0.0 || Geschwindigkeit: 0
Beschleunigungsfaktor: 0.01 || Geschwindigkeit: 1
Beschleunigungsfaktor: 0.02 || Geschwindigkeit: 2
Beschleunigungsfaktor: 0.03 || Geschwindigkeit: 3
Beschleunigungsfaktor: 0.04 || Geschwindigkeit: 5
Beschleunigungsfaktor: 0.05 || Geschwindigkeit: 6
Beschleunigungsfaktor: 0.060000000000000005 || Geschwindigkeit: 7
Beschleunigungsfaktor: 0.07 || Geschwindigkeit: 9
Beschleunigungsfaktor: 0.08 || Geschwindigkeit: 10
Beschleunigungsfaktor: 0.09 || Geschwindigkeit: 11
Beschleunigungsfaktor: 0.09999999999999999 || Geschwindigkeit: 12
Beschleunigungsfaktor: 0.10999999999999999 || Geschwindigkeit: 14
Beschleunigungsfaktor: 0.11999999999999998 || Geschwindigkeit: 15
Beschleunigungsfaktor: 0.12999999999999998 || Geschwindigkeit: 16
Beschleunigungsfaktor: 0.13999999999999999 || Geschwindigkeit: 18
Beschleunigungsfaktor: 0.15 || Geschwindigkeit: 19
Beschleunigungsfaktor: 0.16 || Geschwindigkeit: 20
Beschleunigungsfaktor: 0.17 || Geschwindigkeit: 21
...
Beschleunigungsfaktor: 0.9100000000000006 || Geschwindigkeit: 102
Beschleunigungsfaktor: 0.9200000000000006 || Geschwindigkeit: 103
Beschleunigungsfaktor: 0.9300000000000006 || Geschwindigkeit: 104
Beschleunigungsfaktor: 0.9400000000000006 || Geschwindigkeit: 104
Beschleunigungsfaktor: 0.9500000000000006 || Geschwindigkeit: 105
Beschleunigungsfaktor: 0.9600000000000006 || Geschwindigkeit: 106
Beschleunigungsfaktor: 0.9700000000000006 || Geschwindigkeit: 107
Beschleunigungsfaktor: 0.9800000000000006 || Geschwindigkeit: 107
Beschleunigungsfaktor: 0.9900000000000007 || Geschwindigkeit: 108
Beschleunigungsfaktor: 1.0000000000000007 || Geschwindigkeit: 109
Danke für eure Hilfe