Je travaille sur un cadran qui tourne autour d'un cercle.
Ce cadran devrait vous permettre de vous déplacer n'importe où dans un cercle pour ajuster la position du cadran à un point du cercle avec le même angle que le clic. Par exemple, à partir du cadran ci-dessus, si vous avez cliqué sur le point indiqué en rose ci-dessous, je déplacerais le cadran au-dessus de ce point mais sur le cercle.
Je sais comment obtenir la position d'un point sur un cercle étant donné un rayon et un angle (en radians). Voilà cette formule :
x = Cos(angle) * radius + CenterX;
y = Sin(angle) * radius + CenterY;
Cependant, je cherche à faire un peu l'inverse - j'ai un point de clic, que je veux transformer en un point sur un cercle (où va le bouton de commande). J'essaie d'utiliser ce point (et un rayon donné) pour déterminer l'angle en radians pour cela, afin de pouvoir placer le bouton de commande sur le cercle au même angle.
Existe-t-il une formule pratique que je peux utiliser pour y parvenir?
la source
atan
est l'abréviation dearctan
, etatan2
est juste une fonction qui accepte des arguments individuels et fait la division pour vous.Réponses:
Découvrez la fonction atan2 .
Il vous donne l'angle entre (0, 0) et (x, y),
x
ety
étant les arguments de la fonction.Edit: si le centre du cercle est pas (0, 0), peu importe, faire ceci:
atan2(y - cy, x - cx)
.la source
(0,0)
? Je suppose que je viens de compenser les argumentsatan2
comme indiqué par @Luis ci-dessous?y
atan2
étaient en arrière!Vous avez besoin du centre du bouton et de la pointe du curseur ainsi que de la fonction atan2 . Vous l'utilisez ensuite comme ceci:
la source
Une référence correcte: http://www.mathsisfun.com/polar-cartesian-coordinates.html
la source