# Winkel eines Vektors berechnen [Anfängerprob]



## Loddakwin (21. Okt 2013)

Hey Leute

ich bin ganz neu hier ich hab überall nach dem Thema gesucht hab mir auch auf Wikipedia Kettenbrüche angesehen aber ich hab es wirklich nicht verstanden vl kann mir hier wer weiterhelfen.

Also nun zu meinem eigentlich Problem ich hab an der Uni eine Aufgabenstellung bekommen die lautet:

Erstellen Sie ein Programm, das den Winkel des Vektors (x,y) mittels arctan(y/x) berechnet. Den arctan berechnen Sie mit Hilfe des Kettenbruchs

arctan(t) = t / (1 + (1t)2 / (3 + (2t)2 / (5 + (3t)2 / (7 + ...)))),

und zwar in der 1., 2. und 3. Approximation, wobei Sie in der 1. Approximation den 2. Bruch auf 0 setzen, also t / (1 + 0), bei der 2. Approximation den 3. Bruch auf 0 setzen, usw.. Rechnen Sie das Ergebnis von Radianten in Grad um. x und y sind einzugeben.

Beispiel:

x eingeben:
5
y eingeben:
5
1: 57.29578
2: 42.971835000000006
3: 45.35915916666667

Ich will hinzufügen ich erwarte jetzt keine fix fertigen Programme oder Lösungen aber vl irgendwie einen denkanstoss oder wo ich nachsehen kann um das zu verstehen ich kann einfach nichts damit anfangen....

Danke im voraus

lg lodi


----------



## Tobse (21. Okt 2013)

Werfen wir einen Blick auf den Einheitskreis:


Wenn du die Rote Linie als den Vektor betrachtest, ist der sinus die y-komponente und der cosinus die x-komponente des Vektors. Der Tangens entspricht dem Betrag/der Länge des Vektors.

Hilft das weiter?


----------



## Loddakwin (21. Okt 2013)

Das ist schon nicht schlecht vielen dank nur ich versteh nicht wie ich das im Programm selber berechnen lasse ganz normal in einer variablen speichern oder denk ich das falsch ?


----------



## Tobse (21. Okt 2013)

Um von der Konsole zu lesen brauchst du einen Reader, also machst du


```
BufferedReader systemInR = new BufferedReader(new InputStreamReader(System.in));
```

Dann kannst du ganze Zeilen mit


```
String line = systemInR.readLine();
```

lesen und sie dann so in einen [c]double[/c] konvertieren:


```
double x = Double.parseDouble(systemInR.readLine());
```


----------



## Loddakwin (21. Okt 2013)

Tut mir leid aber soweit sind wir noch nicht in den Vorlesungen uns wurde die Art noch nicht erklärt also kann ich dem überhaupt nicht folgen.. es sollte eigentlich simpler funktionieren oder ist das simple ich hab keine Ahnung das ist das erste mal das ich mit Java Programmiere..


----------



## Tobse (22. Okt 2013)

Irgendwie musst du ja die Werte in dein Programm bekommen. Aber du kannst es auch über die Kommandozeilen-Argumente machen:

```
class foo {
    public static void main(String[] args) throws Exception
    {
        double x = Double.parseDouble(args[0]);
        double y = Double.parseDouble(args[1]);
    }
}
```


```
java foo 2 3
```
Würde dann deinem Programm den Vektor [c](2,3)[/c] mitteilen.


----------

