2010-08-13 4 views
1

Я пытаюсь сделать поворот игрового объекта, установив начальную и конечную точку и X-кадров для движения. Затем интерполируйте начальный и конечный угол, чтобы сделать это.Интерполирующие углы

Это хорошо работает, но я стараюсь сделать как можно более короткий маршрут в качестве опции (в отличие от «сделать самый длинный маршрут»). В большинстве случаев это работает, но если поворот превышает 360 или ниже 0, я не знаю, как его обнаружить и изменить числа. (например, если я хочу взять кратчайший маршрут от 270 до 90, самый короткий маршрут превышает 360/0, поэтому он никогда не используется, поэтому 270 должен стать -45 для интерполяции до 90). Я ужасно объясняю, и я не родной английский, чтобы округлить его, поэтому я буду использовать псевдокод того, что у меня есть.

thing.start_angle = 180 
thing.end_angle = 90 
thing.angle = interpolate(thing.start_angle, thing.end_angle, position) 

Мне нравится этот путь (для детального контроля времени по «если угол> max_angle то угол - 1»), но я не могу найти «правило» для того, как обнаружить, если угол будет вращаться ... Как я могу найти, будет ли поворот ниже 0 или выше 360, чтобы действовать соответственно?

ответ

1

Угол будет обернуть, если

thing.end_angle - thing.start_angle> = 180 или < -180

(предполагая, что диапазон углов от 0 до 379).

+0

Казалось, что работать с <= -180 вместо 0, несмотря на использование углов в правильном формате ... о, хорошо, это сработало, спасибо вам большое! – MissHalberd

+0

Да, ты прав :) – sje397