# Mathe in der Programmierung (Winkel im Bogenmaß)



## Silam (2. Nov 2007)

Hi......

hab ne Frage ..... ist auch ein mathematisches Problem aslo nicht nur in der Programmierung

ich habe eine Ameise die soll auf dem Feld laufen...... ich hab sie so weit dass:

- sie nach rechts und links läuft oder auch rechts oder links hoch, wenn ich die koordinaten ganz eingebe
- ich sie in jede Richtung drehen kann (also Blickwinkel)

jetzt soll meine Ameise aber in die Richtung laufen in die sie gedreht ist. sprich schaut sie nach rechts oben dann soll sie auch rechts oben laufen........durch rumprobieren der werte für X und für Y und der Drehrichtung klappt das auch ...aber ich soll es so programmieren, dass ich einen beliebigen winkel eingebe und meine ameise auch dahin läuft.

Es gibt auch andere Klassen die untereinander verknüpft sind die simulation wir in der Klasse Ameisensimulation ausgelöst......


was ich bisher hab: (Alles muss im Bogenmaß sein)


```
private double x = 400;
    private double y = 400;
    private double drehung = 4;
    private String grafik = "";
    private String beschriftung = "";

....


  public void handle(AmeisenSimulation simulation) {

        this.setX(this.getX()- 2); // hier läuft sie nach rechts

    }
    

    public void bewegeInGedrehteRichtung(AmeisenSimulation simulation){
        
       
       this.setX(this.getX()- Math.cos(double X)); //funktioniert aber so nicht
       this.setY(this.getY() - Math.sin(double Y));


 public double getX() {
        return x;
    }

 
    public void setX(double x) {
        this.x = x;
    }

    
    public double getY() {
        return y;
    }

    

    public void setY(double y) {
        this.y = y;
    
    }

   
    public void setDrehung(double drehung) {
        this.drehung = drehung;
    }
```
  danke im voraus.......ich kann nemmer *Kopf voll Mathe hab*


----------



## Drake (2. Nov 2007)

Hallo

ich hab da mal was vorbereitet







Die x-Koordinata kannst du aus dem sinus und die y-Koordinate aus dem cosinus des Winkels ableiten. Dabei musst du aber eine Fallunterscheidung treffen, und zwar für x ob Winkel größer 180 und für y ob Winkel kleiner 90 oder größer 270. Das Egebniss adierst bzw. subtrahierst du dann von deiner aktuellen Position.

Ja, ich gestehe, ich habe keine Ahnung wie viele Beine eine Ameise wirklich und es war mir z blöd danach zu googlen.


----------



## Silam (2. Nov 2007)

wow danke
die ameise sieht echt gelungen aus 
den mathematischen teil hab ich jetzt gepeilt *wunder* wie das dann im Programmcode aussieht werd ich mal austesten...


----------



## Silam (2. Nov 2007)

ok ich hab meine Ameise jetzt immerhin so weit, dass sie in Abhänigkeit der Drehrichtung läuft....also wenn ich verschiedene Richtungen ausprobiere kommen auch andere Richtungen in die sie sich bewegt ...nur die Nase zeigt immer no net nach vorn...... ich habs zwar auspobiert aber da spielt immer 90 grad ne rolle

mein code sieht jetzt so aus

setX(getX) und setY(getY) steht für meine aktuelle Position:


```
this.setX(this.getX() - Math.sin(this.getDrehung()));
this.setY(this.getY() - Math.cos(this.getDrehung()));
```

ich hab auch das ganze so ausprobiert



```
this.setX(this.getX() - Math.sin(this.getDrehung())+180);
this.setY(this.getY() - Math.cos(this.getDrehung()-90));
```

geht aber auch nicht......



bei einer Drehung von 3 sah das ganze so aus (Pfeil zeigt Laufrichtung)


----------



## Drake (2. Nov 2007)

Wenn ich bdich richtig verstehe, funktioniert die Beewegung, aber nict die Drehung deines Bildes, richtig?
Wenn du dein Bild in eine neue Position drehen möchtest, musst dabei den alten Winkel berücksichtigen.


----------



## Leroy42 (3. Nov 2007)

```
Math.sin(this.getDrehung())+180);
```

1. Die trigonometrischen Methoden verlangen als Argumente Winkel im Bogenmaß
2. Das Ergebnis von Math.sin(...) liefert eine reele Zahl; weshalb addierst du da dann *180°* drauf?


----------



## Silam (3. Nov 2007)

ich sag doch ...bin ne Matheniete...ok hab die Winkel auf Bogenmaß umgestellt. war der Meinung, dass ich die so stehen lassen könnte... nach dem ich das gemacht hatta, freute ich mich erst mal riesig, bis ich gemerkt hatte dass die Ameise verkehrt herum läuft............so ne kleine ameise und so viel Aufwand.


@Drake hab deinen Tipp ausprobiert klappt aber auch net


----------



## JPKI (4. Nov 2007)

Wie stellst du denn auf Bogenmaß um?
Schau dir mal die Funktionen Math.toRadians() und Math.toDegrees() an.


----------

