Интерполяционные углы - PullRequest
       21

Интерполяционные углы

1 голос
/ 13 августа 2010

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

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

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

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

1 Ответ

1 голос
/ 13 августа 2010

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

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

(при условии диапазона угла от 0 до 379).

...