Завъртане на обект към точка на допир

Имам обект с 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 Pi, с което имам проблем. Реших, че ако проверя дали разликата между ъглите е по-малка от Пи, това няма да е проблем и просто се движи в най-късата посока. Но когато изчислената разлика е по-голяма от Pi, потенциално може да бъде по-обезпокоително - person LiamJPeters; 05.11.2012
comment
Наздраве Крис, оценявам отговора. Има смисъл - person LiamJPeters; 05.11.2012