Forum: Offtopic Winkelberechnungen programmieren


von Matthias S. (da_user)


Lesenswert?

Tag,

ich möchte an einem Kreisumfang die "Strecke" in Grad zwischen zwei 
Punkten berechnen.

Punkt a liege mal bei 0°, Punkt b bei 10°. Is klar, in die eine Richtung 
habe ich ne "Strecke" von 10°, in die andere Richtung 590°. Aber wie 
giese ich das ganze in Software?

Noch schwerer wirds ja dann (meiner Ansicht nach) wenn Punkt a bei 590° 
liegt. Dann muss ich nämlich die 20° "Strecke" über die 0° berechnen. 
Wie krieg ich sowas hin?

Falls es hilft, ich programmiere in Visual C# 2010 Express, evtl. ist ja 
dort schon was dafür drinnen....

von Karl H. (kbuchegg)


Lesenswert?

Matthias S. schrieb:
> Tag,
>
> ich möchte an einem Kreisumfang die "Strecke" in Grad zwischen zwei
> Punkten berechnen.
>
> Punkt a liege mal bei 0°, Punkt b bei 10°. Is klar, in die eine Richtung
> habe ich ne "Strecke" von 10°, in die andere Richtung 590°.

350.
Aber seis drum

> Aber wie
> giese ich das ganze in Software?

Winkel von dem einen Punkt in Bezug auf 0 ausrechnen, Winkel vom 
anderen. Ergebnisse voneinander abziehen.  Der Cowinkel ist dann 360 - 
Winkel

> Noch schwerer wirds ja dann (meiner Ansicht nach) wenn Punkt a bei 590°
> liegt.

Ist völlig wurscht. Winkel ist Winkel.

Zum Schluss normiert man das Ergebnis ja sowieso in den Bereich 0 bis 
360

> Falls es hilft, ich programmiere in Visual C# 2010 Express, evtl. ist ja
> dort schon was dafür drinnen....

Auch C# wird die Funktion atan2 haben. Mit der ist das ein Kinderspiel, 
weil sie den Quadranten gleich korrekt berücksichtigt.

Aber Achtung: In Programmiersprachen wird normalerweise in Radianten 
gerechnet. Der Winkel eines Vollkreises ist dann nicht 360° sondern 2*PI

von Matthias S. (da_user)


Lesenswert?

Klar, 350°,.. so verwirrt bin ich schon vom ganzen Grübeln...

atan2? Radianten? Wo kann man sich da schlauerweiße einlesen?

von Karl H. (kbuchegg)


Lesenswert?

Radianten

   So wie es auch die Mathematiker machen.
   Ein Vollkreis hat nicht 360° sondern 2*PI als Winkel
   Ist für dich einfach nur eine lineare Umrechnung mehr nicht.

   PI rad  ............. 180°
   dein Ergebnis y .....  x°
  ---------------------------
        180 * y
    x = -------
          PI


atan

Du kennst die Winkelfunktionen?
Sinus, Cosinus, Tangens.
Davon gibts dann auch die Umkehrung: Arcus Sinus, Arcus Cosinus und 
Arcus Tangens.
Und vom Arcus Tangens gibt es dann auch noch eine Sonderform, der man 
nicht den Tangenswert vorgibt, sondern den aufgeschlüsselt in die x und 
die y Komponente. Das ermöglicht dem atan2 dann auch noch den Quadranten 
korrekt zu bestimmen, was ja beim normalen Tangens aufgrund der Symetrie 
der Funktion nicht möglich ist.
Für dich ist es ganz einfach

Du hast einen Punkt mit den Koordinaten x und y
Der Winkel des Punktes in Bezug zu X-Achse ist ganz einfach

   winkel = atan2( y, x )

fertig. Dieser Winkel ist noch in Radianten, muss also noch in Grad 
umgerechnet werden

   winkel = atan2( y, x ) * 180 / 3.141592654;

fertig.

Was du jetzt in C# an usings brauchst um den atan2 zu kriegen, weiß ich 
nicht. Aber deine Hilfe weiß da sicherlich bescheid.

von Matthias S. (da_user)


Lesenswert?

???

Ich glaub ich sollte ins Bett gehen und mir das ganze morgen nochmal zu 
Gemüte führen...

> Du hast einen Punkt mit den Koordinaten x und y

Nö, ich habe gegeben z.B.:

a = 10°
b = 90°

und hätte jetzt gerne die Differenz rechts, bzw. linksrum.

Aber wie gesagt... ist schon spät...

von Karl H. (kbuchegg)


Lesenswert?

Matthias S. schrieb:
> ???
>
> Ich glaub ich sollte ins Bett gehen und mir das ganze morgen nochmal zu
> Gemüte führen...
>
>> Du hast einen Punkt mit den Koordinaten x und y
>
> Nö, ich habe gegeben z.B.:
>
> a = 10°
> b = 90°
>
> und hätte jetzt gerne die Differenz rechts, bzw. linksrum.

willst du mich verarschen?
Du kannst doch Subtrahieren oder nicht?

Nimm dir eine Uhr und überleg dir, wie du wohl die Zeitdifferenz in 
Sekunden berechnest, wenn ein Sekundenzeiger auf 12 und der andere auf 
58 zeigt und ob wes wohl negative Sekunden gibt und was du dagegen tust, 
damit das Ergebnis wieder im Bereich 0 bis 60 Sekunden liegt. Denn 
großer kann die Zeitdiffernz zwischen 2 Sekundenzeigern nun mal nicht 
sein. Weder links rum noch rechts rum.

Da du von 'Punkten' gesprochen hast, dachte ich das das Problem 
wenigstens ein bischen interessant für jemanden ist, der in 
Trigonometrie noch nicht so bewandert ist. Aber wenn ich gewusst hätte, 
dass du Schwierigkeiten mit einem Problem hast, dass 7-jährige beim 
Erlernen der (Analog-)Uhr mit links lösen, hätte ich es gelassen.

von Platinenschwenker .. (platinenschwenker)


Lesenswert?

Matthias S. (da_user) schrieb:

> Punkt a liege mal bei 0°, Punkt b bei 10°. Is klar, in die eine Richtung
> habe ich ne "Strecke" von 10°, in die andere Richtung 590°.

hmm .. also mein Kreis hat immer noch 360° ;)

@ Karl heinz Buchegger

      180 * y
    x = -------
          PI

hast du bei deinem Ergebnis den Kehrwert berechnet?

Es ist für die Übersicht besser statt y einen Winkel zu verwenden, sonst 
verwechselt man die Größen zu leicht.

Dem Karl-Heinz seine Version etwas "aufgehübscht" ;-)

Der Teilkreisumfang x verhält sich zum Kreisumfang U wie der Teilwinkel 
alpha zum Gesamtwinkel 360°.

mit Kreisumfang U = d·Pi = 2·r·Pi

nach Teilumfang x aufgelöst

im Einheitskreis mit r = 1

auf Buchegger's Version gekürzt :)

Was du (Karl-Heiz) allerdings mit dem Arcustangens
http://www.mathe-online.at/mathint/wfun/grafiken/tancot.gif
http://upload.wikimedia.org/wikipedia/commons/thumb/9/9d/Circle-trig6.svg/400px-Circle-trig6.svg.png
hier zeigen willst mir auch nicht klar. ;)

von Matthias S. (da_user)


Lesenswert?

> willst du mich verarschen?
> Du kannst doch Subtrahieren oder nicht?

Gestern konnte ich es wohl nicht mehr, heute ist's mir wie Schuppen von 
den Augen gefallen.

Merke: Wenn man spät abends noch ein Problem hat, lieber ne Nacht drüber 
schlafen als 'n Forum verrückt machen.

Danke trotzdem

von Karl H. (kbuchegg)


Lesenswert?

Platinenschwenker .. schrieb:

>      180 * y
>    x = -------
>          PI
>
> hast du bei deinem Ergebnis den Kehrwert berechnet?


Nö, warum?
Von den arcus Funktionen kriegt man den Winkel in Radianten und er will 
es in Grad haben.


> Was du (Karl-Heiz) allerdings mit dem Arcustangens
> http://www.mathe-online.at/mathint/wfun/grafiken/tancot.gif
> 
http://upload.wikimedia.org/wikipedia/commons/thumb/9/9d/Circle-trig6.svg/400px-Circle-trig6.svg.png
> hier zeigen willst mir auch nicht klar. ;)


Nicht Arcus Tangens.
Die Funktion heißt atan2 und im Prinzip gibt man ihr (trigonomterisch 
gesheen) den Sinuswert und den Cosinuswert des gesuchten Winkels vor und 
sie berechnet daraus den Winkel.

Genauso wie ja ein Tangens auch nichts anderes ist als

   tan(a) = sin(a) / cos(a)

davon dann die Umkehrung um a zu erhalten. Nur dass man eben nicht 
selber die Division ausführt um den Tangenswert zu erhalten, von dem 
atan dann den Winkel bestimmt, sondern das man der Funktion den sin- und 
cos-Wert mitgibt, damit die atan2 Funktion auch noch den Quadranten 
richtig bestimmen kann.

von Platinenschwenker .. (platinenschwenker)


Lesenswert?

Karl heinz Buchegger schrieb:

> Nicht Arcus Tangens.
> Die Funktion heißt atan2 und im Prinzip gibt man ihr (trigonomterisch
> gesheen) den Sinuswert und den Cosinuswert des gesuchten Winkels vor und
> sie berechnet daraus den Winkel.

Mensch na klar, atan2() eine schönes Funktionlein ;-)

"Der „Arkustangens“ mit zwei Argumenten (atan2)"
http://de.wikipedia.org/wiki/Arkustangens_und_Arkuskotangens

Danke Karl-Heinz für den Gedankenstubser.

von Michael K. (charles_b)


Lesenswert?

Matthias S. schrieb:
> Klar, 350°,.. so verwirrt bin ich schon vom ganzen Grübeln...
>
> atan2? Radianten? Wo kann man sich da schlauerweiße einlesen?

Mathebuch 10.Klasse Gymnasium.

p.s. Der Kreis ist rund!

Bitte melde dich an um einen Beitrag zu schreiben. Anmeldung ist kostenlos und dauert nur eine Minute.
Bestehender Account
Schon ein Account bei Google/GoogleMail? Keine Anmeldung erforderlich!
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.