Pracuję nad tarczą, która obraca się wokół koła.
To pokrętło powinno umożliwiać ruch myszką w dowolnym miejscu koła, aby dopasować położenie pokrętła do punktu na okręgu pod tym samym kątem co kliknięcie. Na przykład z powyższej tarczy, jeśli klikniesz miejsce pokazane na różowo poniżej, przesunęłem tarczę nad ten punkt, ale na kółko.
Wiem, jak uzyskać pozycję punktu na okręgu, biorąc pod uwagę promień i kąt (w radianach). Oto ta formuła :
x = Cos(angle) * radius + CenterX;
y = Sin(angle) * radius + CenterY;
Jednak chcę zrobić coś wręcz przeciwnego - mam punkt kliknięcia, który chcę zmienić w punkt na kole (tam, gdzie idzie gałka kontrolna). Próbuję użyć tego punktu (i danego promienia), aby obliczyć kąt w radianach, aby móc ustawić pokrętło sterujące na okręgu pod tym samym kątem.
Czy istnieje przydatna formuła, której mogę użyć, aby to osiągnąć?
źródło
atan
jest skrótem odarctan
iatan2
jest tylko funkcją, która akceptuje poszczególne argumenty i dokonuje podziału za ciebie.Odpowiedzi:
Sprawdź atan2 .
Daje ci kąt pomiędzy (0, 0) a (x, y),
x
iy
jest argumentem funkcji.Edit: jeśli środek okręgu nie jest (0, 0), bez względu na to, po prostu to zrobić:
atan2(y - cy, x - cx)
.źródło
(0,0)
? Zgaduję, że właśnie przesunąłem argumenty,atan2
jak pokazano poniżej przez @Luis?y
atan2
były zacofane!Potrzebny jest środek gałki i punkt kursora wraz z funkcją atan2 . Następnie użyj go w następujący sposób:
źródło
Dobra referencja: http://www.mathsisfun.com/polar-cartesian-coordinates.html
źródło