Я работаю над циферблатом, который вращается по кругу.
Этот циферблат позволяет перемещать мышь в любом месте круга, чтобы отрегулировать положение циферблата в точке на круге с тем же углом, что и щелчок. Например, на циферблате выше, если вы щелкнете по точке, показанной розовым цветом ниже, я бы переместил циферблат выше этой точки, но по кругу.
Я знаю, как получить положение точки на окружности с учетом радиуса и угла (в радианах). Вот эта формула :
x = Cos(angle) * radius + CenterX;
y = Sin(angle) * radius + CenterY;
Тем не менее, я пытаюсь сделать что-то противоположное - у меня есть точка щелчка, которую я хочу превратить в точку на круге (куда идет ручка управления). Я пытаюсь использовать эту точку (и данный радиус), чтобы вычислить для нее угол в радианах, чтобы я мог поместить ручку управления на круг под тем же углом.
Есть ли удобная формула, которую я могу использовать для достижения этой цели?
atan
это сокращение от arctan
, и atan2
это просто функция, которая принимает отдельные аргументы, и делает разделение для вас.