Winkelberechnung

Hi,
ich suche eine Möglichkeit, einen Winkel in einem Kreis zu ermitteln. Dabei ist der Kreismittelpunkt der Koordinaten-Ursprung. Wenn auf einen Punkt im Kreis geklickt wird, soll der Winkel entsprechend der y-Achse im Urzeigersinn ermittelt werden.
(Ich habe einen Farbkreis und will den Farbwert ermitteln)

Programmiersprache ist egal, ich will’s in JavaScript realisieren, mir fehlt die Mathematik…
Danke
Daniel

Hi,

ich suche eine Möglichkeit, einen Winkel in einem Kreis zu
ermitteln. Dabei ist der Kreismittelpunkt der
Koordinaten-Ursprung. Wenn auf einen Punkt im Kreis geklickt
wird, soll der Winkel entsprechend der y-Achse im Urzeigersinn
ermittelt werden.
(Ich habe einen Farbkreis und will den Farbwert ermitteln)

Du Brauchst die Kreisfunktionen:
cos(alpha) = ankathete / hypotenuse
sin(alpha) = gegenkathete / hypotenuse
hypotenuse = sqrt(ankathete^2 + gegenkathete^2)

Du brauchst nun die inversen Kreisfunktionen (ich glaube arcussinus oder arcuscosinus, in C asin() oder acos()):
alpha = asin(gegenkathete / hypotenuse)

Je nachdem, wie Dein Koordinatensystem liegt (und von wo in welche Richtung der Winkel wachsen soll) entspricht die Ankathete
x (- Urspung x) oder y (- Ursprung y). Beachte, dass die Werte der y-achse auf dem Monitor meist nach unten groesser werden (Null/Null ist meist links oben, Max/Max rechts oben, negative Werte gibts nicht)! Am besten Du probierst einfach rum, bis es passt (ich komm meist eh irgendwo durcheinander und probier rum :wink:

Gruss

Thorsten

Hi Daniel :wink:))

Also, dein Mausklick finde statt an der Position (x0,y0) und dein Mittelpunkt sei (xm,ym). Dann kannst du den von dir gesuchten Winkel alpha wie folgt berechnen:

dx= x0-xm;
dy= y0-ym;
alpha= acos(dy/sqrt(dx\*dx+dy\*dy));
if (dx
sqrt() liefert die Quadratwurzel und acos() den Arcus-Cosinus des jeweiligen Argumentes.

cu Stefan.

falls y-Achse nach unten zeigt

Hi, ich bins nochaml :wink:))

Für den Fall, den Thorsten erwähnt hat, dass nämlich die y-Achse nach unten zeigt, brauchst du nur „dy= y0-ym“ durch „dy= ym-y0“ zu ersetzen …

cu Stefan.

Danke
Danke Stefan, danke Thorsten.

Die Funktion asin() hat mir in meiner Sammlung gefehlt. Ich hab’s inzwischen fertig bekommen und mein Farbkreis funktioniert wunderbar.
Nochmal vielen Dank an Euch beide
Daniel