Учитывая мой курс и отношение к другому объекту, как я могу повернуться к нему лицом? - PullRequest
0 голосов
/ 04 июля 2018

У меня есть heading в градусах и bearing для другого парня в градусах. Я также знаю свою позицию и его позицию. Как мне повернуться к нему?

  • heading - градусы с севера по часовой стрелке, с которыми я сталкиваюсь
  • bearing - градусы от севера по часовой стрелке до другого парня

У меня также есть myPosX, myPosY, badPosX и badPosY, если они будут полезны.

Я попробовал следующий фрагмент кода, и он вроде работает.

local x = heading - bearing
if (x < 0) then
  TurnRight()
else
  TurnLeft()
end

Проблема в том, что если подшипник меняется с моего правого на левое, то я в основном поворачиваю весь оборот по часовой стрелке, а не все еще движусь против часовой стрелки.

Я не уверен, как добиться того, чтобы трекинг продолжал плавно вращаться, когда подшипник движется слева (скажем, 120 градусов), вправо (скажем, 80 градусов), в то время как мой курс находится между (скажем, 100 градусов).

TurnRight() будет +1 для моих heading и TurnLeft() будет -1 для моих heading.

1 Ответ

0 голосов
/ 04 июля 2018

Предполагая, что heading и bearing находятся в диапазоне [0, 360), вы можете написать:

local x = (360 + heading - bearing) % 360
if (x > 180) then
  TurnRight()
else
  TurnLeft()
end
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...