Поворот объекта к точке касания

У меня есть объект с x, y, шириной, высотой, центром вращения для X и Y (originX, originY), и я успешно вычислил угол между этой центральной точкой и точкой касания, используя

touchAngle = Math.toDegrees(Math.atan2(deltaY, deltaX));

и это работает очень хорошо.

Теперь я пытаюсь повернуть объект к этой точке касания, просто проверяя, больше ли угол, чем его текущий угол, добавляю немного поворота, а если он меньше, то удаляю поворот. Я знаю, что это неправильно, так как когда точка касания пересекает границу 0/360, объект начинает вращаться в неправильном направлении, даже если это означает очень большое вращение.

Что было бы элегантным решением, чтобы заставить его вращаться на кратчайшее расстояние до точки касания?

(Используя Java, в частности Libgdx)

Спасибо


person LiamJPeters    schedule 05.11.2012    source источник
comment
Что такое точка касания? И это хорошее прикосновение или плохое прикосновение?   -  person Andrew Thompson    schedule 05.11.2012
comment
Это просто точка, в которой щелкают мышью/пальцем/касаются. Это всегда хорошее касание, и угол между этой точкой и центром объекта правильный и проверенный.   -  person LiamJPeters    schedule 05.11.2012
comment
ОК - я повеселился. ;) Надеюсь, вы получите хороший ответ. :)   -  person Andrew Thompson    schedule 05.11.2012


Ответы (1)


Я сделал кучу этих расчетов раньше (хотя это совсем другое приложение). Просто возьмите разницу и, если она отрицательная, добавьте 2pi, а затем, если она больше 2pi, вычтите 2pi. Сделайте это для a-b, а затем для b-a. Меньшее значение будет путь.

person Chris Gerken    schedule 05.11.2012
comment
У меня проблема с учетом пересечения линии 2 Пи. Я подумал, что если я проверю, меньше ли разница между углами, чем Пи, это не будет проблемой, и я просто буду двигаться в кратчайшем направлении. Но когда расчетная разница больше, чем число Пи, это потенциально может быть более проблематичным. - person LiamJPeters; 05.11.2012
comment
Ура Крис, я ценю ответ. Имеет смысл - person LiamJPeters; 05.11.2012