Я ищу для отслеживания дельты вращения (ось y) между двумя показаниями.расчет дельта вращения на основе начального угла и угла тока
Существует игровой объект, с которого я начинаю отсчитывать начальный угол. Тогда у меня есть другая переменная, которая читает живой угол во время цикла обновления.
Я хочу, чтобы значение дельта было агностиком отрицательного или положительного, по сути, я собираюсь применить те же самые обновления, независимо от того, поворачивается ли объект на 20 градусов влево или вправо.
EDIT: Я хочу, чтобы значение дельта быть наименьший угол, так что максимальная она может быть 180, перед подсчетом вниз до 0.
Пример: Если мой initFaceAngle == 5 и currentFaceAngle == 355 затем myAngle == 10
void Start()
{
initFaceAngle = hmd.transform.rotation.eulerAngles.y;
}
void update()
{
currentFaceAngle = hmd.transform.rotation.eulerAngles.y;
// My terrible first attempt... look ma' I can math.
float myAngle = (float)Math.Abs(initFaceAngle - currentFaceAngle);
}
Очевидно мой расчет не будет работать, потому что получение разницы между двумя углами, не принимать во внимание 360 градусов. Поэтому я решил, что мне нужен пирог (pi) на этом, но за пределами того, чтобы быть впечатляющим пирогом (pi), я не имею понятия, как вызвать его магические способности.
Какую формулу следует использовать для захвата дельта?
Как я могу заставить его читать то же, вращаться ли влево или вправо?
Вы можете использовать модульную арифметику (360 градусов). Число, превышающее 180 градусов, будет отрицательным вращением. – jdweng
Я немного не понимаю, почему разница не сработает для вас. Если ваш угол изменяется на 20 градусов, то Math.Abs должен работать на вас, независимо от направления. Если вы обеспокоены углом, который вращается на 380 градусов, вы можете сделать «var myAngleDelta = Math.Abs ((initFaceAngle - currentFaceAngle)% 360)'. – Travis
Проблема, с которой я сталкиваюсь, заключается в том, что я не хочу, чтобы myAngle подсчитывал до 359, а затем переходил на 0. Я хочу, чтобы он вычислил наименьший угол, поэтому максимальный myAngle может быть равен 180. Так что я полагаю, что мой вопрос is: Как рассчитать минимальную угловую дельта между initFaceAngle и currentFaceAngle? – stuffyjoelab